Nginx反向代理Nodejs服务器
- 微信小程序服务器需要https服务,在此前提下需先为域名配置SSL证书
腾讯云免费一年证书申请地址 https://console.cloud.tencent.com/ssl
- 根据腾讯云实验室指导
- 将nginx证书上传到服务器上
- 配置nginx的配置文件
server {
listen 443;
server_name www.example.com; # 改为绑定证书的域名
# ssl 配置
ssl on;
ssl_certificate 1_www.example.com_bundle.crt; # 改为自己申请得到的 crt 文件的名称
ssl_certificate_key 2_www.example.com.key; # 改为自己申请得到的 key 文件的名称
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:8765;
}
}
遇到的问题
1.腾讯云域名的DNS解析很久失效,重新绑定到我的新的服务器上,一度以为是服务器问题。
- nodejs在本地跑的服务访问自己https://www.xx.com出现502。仔细一想是因为反向代理。肯定是把本地nodejs服务端口代理到nginx上,那nodejs就跑127.0.0.1本机,把定义的端口9999,让nginx代理即可。因此
server {
listen 443;
server_name www.example.com; # 改为绑定证书的域名
# ssl 配置
ssl on;
ssl_certificate 1_www.example.com_bundle.crt; # 改为自己申请得到的 crt 文件的名称
ssl_certificate_key 2_www.example.com.key; # 改为自己申请得到的 key 文件的名称
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {# 更换代理端口号,解决问题
proxy_pass http://127.0.0.1:9999;
}
}
网友评论