1. Support websockets
The same domain name, multiple ports, correspond to different services. For example, 9400 is http service, 1900 is websocket service.
Point 1: Configure multiple locations
server{
listen 0.0.0.0:80;
server_name test.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_pass http://114.114.114.110:9400;
proxy_redirect off;
}
location /mqtt {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_pass http://114.114.114.110:1900;
proxy_redirect off;
}
}
Point 2: Upgrade http to websocket
http {
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
......
Modify the above location /mqtt
location /mqtt {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_pass http://114.115.201.210:1900;
proxy_redirect off;
}
2. Port mapping
For example, nginx configures port 5001 service.
server {
listen 5001;
client_max_body_size 100m;
proxy_send_timeout 180s;
proxy_read_timeout 600s;
location / { ......
}
location ^~ /manage {
proxy_pass http://127.0.0.1:5000;
......
}
location /node {
proxy_pass http://127.0.0.1:5000;
......
}
}
Domain name access needs to be configured, mapped to port 80, configured in the same nginx.conf
server { listen 80; server_name test.cn; location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_pass http://114.114 .114.145:5001; proxy_redirect off; } }