在Nginx配置中,location 和 proxy_pass 指令的组合使用决定了如何处理URL路径以及如何将请求转发给后端服务器。
server { listen 443 ssl; server_name mqtt.xx.com; ssl_certificate /home/nginx/cert/_.jcrgyy.pem; ssl_certificate_key /home/nginx/cert/_.jcrgyy.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; location / { proxy_pass http://58.xx.xx.106:8083/mqtt; }
location /test/mqtt {
proxy_pass http://58.xx.xx.106:8083/mqtt; #有子路径 /mqtt
}
location /test/mqtt {
proxy_pass http://58.xx.xx.106:8083; #无子路径 /mqtt
}
}
有子路径和无子路径是有区别的:
1.有子路径
当Nginx配置包含子路径,Nginx会保持路径的连续性,将客户端请求的完整匹配路径(在这里是 /test/mqtt/1 中的 /1 部分)附加到代理目标的末尾。
请求:wsx://mqtt.xx.com/test/mqtt/1
实际:http://58.xx.xx.106:8083/mqtt/1
2.无子路径
请求:wsx://mqtt.xx.com/test/mqtt/1
实际:http://58.xx.xx.106:8083/1