nginx 配置反向代理
nginx 配置反向代理
需求描述:
后端服务器启动时服务目标 ip 通常配置为0.0.0.0
,方便直接使用公网 ip 访问资源或请求数据,使用 nginx 可将 ip 以及端口代理到指定域名,后续可以直接通过域名访问或请求。
提示
nginx 版本:1.14.1
操作系统:centos 8.0
后端服务端口号:1118
目标代理域名:cms-api.tj520.top
目标代理端口:80
无 ssl 证书的配置:
- 进入 nginx 站点配置目录:
cd /etc/nginx/conf.d
- 创建并写入配置文件,名称随意,后缀需为
.conf
vim demo.conf
- 之后后写入配置:
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;
}
}
配置完成退出保存即可
热重载 nginx 配置文件:
nginx -s reload
有 ssl 证书的配置(腾讯云为例):
提示
若需要代理到的域名希望使用 https
进行安全访问,例如:https://www.tj520.top,则需要为该域名安装 ssl
证书。
如何获取证书请查阅:SSL 证书申请流程
以下为nginx
中安装ssl
证书流程
- 申请证书成功后下载证书压缩包,并解压。
- 将解压后得到的
.crt
文件以及.key
文件通过文件上传工具上传至服务器的/etc/nginx/
文件夹下。 - 创建并写入配置文件:
vim demo.conf
- 写入配置:
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 协议
}
- 保存并退出
- 测试配置文件是否配置正确:
nginx -t
- 热重载 nginx 配置文件:
nginx -s reload