如何使用Nginx将443端口反向代理至6040端口(SSL配置)
实现步骤与配置示例
这事儿不难,刚好是Nginx最常用的反向代理+SSL部署场景,我给你一步步讲清楚怎么配置:
1. 准备SSL证书
首先你得有可用的SSL证书——生产环境推荐用免费的Let's Encrypt证书;测试环境的话,自签证书也能凑合用。假设你的证书文件路径是:
- 证书文件:
/etc/nginx/ssl/your_domain.crt - 私钥文件:
/etc/nginx/ssl/your_domain.key
2. 编写Nginx配置
打开你的Nginx配置文件(通常在/etc/nginx/nginx.conf或者/etc/nginx/conf.d/下新建一个your_domain.conf文件),添加以下server块:
server { listen 443 ssl; server_name your_domain.com; # 替换成你的域名或公网IP # SSL证书配置 ssl_certificate /etc/nginx/ssl/your_domain.crt; ssl_certificate_key /etc/nginx/ssl/your_domain.key; # 可选:优化SSL性能与安全性 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; # 反向代理核心配置 location / { proxy_pass http://localhost:6040; # 转发到本地6040端口的应用 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
关键配置说明:
listen 443 ssl:让Nginx监听443端口并启用SSL服务server_name:替换成你的实际域名(或公网IP,若用IP直接访问)proxy_pass:把所有请求转发到运行在6040端口的应用程序- 那些
proxy_set_header:是为了让后端应用能获取到真实的请求信息(比如原请求的域名、客户端IP、协议),避免应用出现跳转错误或无法识别真实来源的问题
3. 可选:80端口自动重定向到HTTPS
如果希望用户访问http://your_domain.com时自动跳转到HTTPS,可以再加一个server块:
server { listen 80; server_name your_domain.com; return 301 https://$server_name$request_uri; }
4. 验证并重启Nginx
配置写完后,先检查配置是否有语法错误:
nginx -t
如果输出test is successful,就可以重启Nginx让配置生效:
systemctl restart nginx # 适用于Ubuntu、CentOS 7+等systemd系统 # 旧系统可以用 service nginx restart
额外注意事项
- 确保服务器防火墙已经开放443(和80,如果加了重定向的话)端口
- 自签证书在浏览器会提示不安全,仅适合测试用,生产环境一定要用可信机构颁发的证书
- 确认6040端口的应用确实在监听
localhost(或你指定的地址),且Nginx有权限访问该端口
内容的提问来源于stack exchange,提问作者user3215778




