跳至主要內容

nginx 配置反向代理

Loclink网站搭建与部署nginxlinux服务器后端原创大约 2 分钟约 677 字

nginx 配置反向代理

需求描述:

后端服务器启动时服务目标 ip 通常配置为0.0.0.0,方便直接使用公网 ip 访问资源或请求数据,使用 nginx 可将 ip 以及端口代理到指定域名,后续可以直接通过域名访问或请求。

提示

nginx 版本:1.14.1
操作系统:centos 8.0
后端服务端口号:1118
目标代理域名:cms-api.tj520.top
目标代理端口:80

无 ssl 证书的配置:

  1. 进入 nginx 站点配置目录:
cd /etc/nginx/conf.d
  1. 创建并写入配置文件,名称随意,后缀需为.conf
vim demo.conf
  1. 之后后写入配置:
server {
  listen       80;  # 目标代理端口
  server_name  cms-api.tj520.top;  # 目标代理域名

  location / {
      root   html;
      index  index.html index.htm;
      proxy_pass  http://0.0.0.0:1118;   # 服务启动的ip地址和端口

      # 以下配置方便后端服务器拿到真实的请求ip地址
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      #后端服务器可以通过X-Forwarded-For获取用户真实IP
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

  1. 配置完成退出保存即可

  2. 热重载 nginx 配置文件:

nginx -s reload

有 ssl 证书的配置(腾讯云为例):

提示

若需要代理到的域名希望使用 https 进行安全访问,例如:https://www.tj520.topopen in new window,则需要为该域名安装 ssl 证书。
如何获取证书请查阅:SSL 证书申请流程open in new window

以下为nginx中安装ssl证书流程

  1. 申请证书成功后下载证书压缩包,并解压。
  2. 将解压后得到的.crt文件以及.key文件通过文件上传工具上传至服务器的/etc/nginx/文件夹下。
  3. 创建并写入配置文件:
vim demo.conf
  1. 写入配置:
server {
        #SSL 默认访问端口号为 443
        listen 443 ssl;
        #请填写绑定证书的域名
        server_name cms-api.tj520.top;
        #请填写证书文件的相对路径或绝对路径
        ssl_certificate cms-api.tj520.top_bundle.crt;
        #请填写私钥文件的相对路径或绝对路径
        ssl_certificate_key cms-api.tj520.top.key;
        ssl_session_timeout 5m;
        #请按照以下协议配置
        ssl_protocols TLSv1.2 TLSv1.3;
        #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;

        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass  http://0.0.0.0:1118;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            #后端服务器可以通过X-Forwarded-For获取用户真实IP
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

server {
    listen       80;
    server_name  cms-api.tj520.top;
    return 301 https://$host$request_uri;   # 强制重定向到 https 协议
}
  1. 保存并退出
  2. 测试配置文件是否配置正确:
nginx -t
  1. 热重载 nginx 配置文件:
nginx -s reload