在开发微信小程序时,微信官方需要全局使用443端口。
在小程序中我们使用了emqtt服务,然后我们的后台跑在iis上。
iis上的项目端口号用的8089,emqtt服务的端口是8083.
我们想要使用Nginx监听443端口,
当监听到访问443端口并且为/mqtt时Nginx代理为8083端口。
当监听到/app时代理为8089端口。
可是我在写完/app后,Nginx仅仅只是帮我做了转发,网页提示网页并不能提供
安全链接。
加上了#proxy_set_header Host $host; 后 网页提示重定向次数过多。
以下是Nginx 的配置
#user nobody;
worker_processes 1;
error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http{
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 443 ssl;
server_name www.brhein.cn;
#配置ssl证书
ssl on;
ssl_certificate Nginx_SSL/1_www.brhein.cn_bundle.crt;
ssl_certificate_key Nginx_SSL/2_www.brhein.cn.key;
#设置编码格式
#charset utf-8;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #服务端要支持 协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
############################################################
# 将Https的转发到IIS上面的8089端口
# IIS
# listen : www.domain.cn:443/app
# redirect : www.domain.cn:8089/app
############################################################
# 监听app
location /app/ {
proxy_pass http://www.domain.cn:8089;
#proxy_set_header Host $host;
}
############################################################
# emqtt的wss使用的是8084端口,则监听443端口的\mqtt 检测到就转到8084端口
# mqtt
# listen : www.domain.cn:443/app
# redirect : www.domain.cn:8089/app
############################################################
# 监听mqtt
location /mqtt {
proxy_pass http://www.domain.cn:8083;
#proxy_set_header Sec-WebSocket-Protocol mqtt;
#more_clear_headers Sec-WebSocket-Protocol;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
#proxy_set_header Host $host;
}
}
}