目錄
下載類型
例如apk文件的下載,Nginx默認是不支持的,需要在配置文件裏做如下配置:
路徑:/etc/nginx/nginx.conf:
include /etc/nginx/mime.types;
這行代碼表示類型的配置文件路徑,打開mime.types這個文件可以看到一些類型的配置,在這個文件下加入
application/vnd.android.package-archive apk;
保存,重啓下nginx
nginx -s reload
負載均衡
負載均衡的配置如下:
upstream GDSM{
server 192.168.43.129;
server 192.168.43.130;
}
server {
listen 8080;
location / {
proxy_pass http://GDSM;
}
}
server {
listen 80;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
}
#websocket path
location /api/MessageRelease {
proxy_pass http://localhost:5000/api/MessageRelease;
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_read_timeout 3600s;
}
}
上傳限制
上傳文件時,nginx報413 Request Entity Too Large錯誤
需要修改nginx配置文件nginx.conf
在http{}段中添加或修改:
client_max_body_size 50M;
獲取Websocket客戶端IP
客戶端通過Websocket連接服務器,服務器想獲取客戶端IP,但由於Nginx的反向代理,服務器通過Request.HttpContext.Connection.RemoteIpAddress.ToString()拿到的是Nginx服務器的IP,所以需要在Nginx上添加配置將客戶端的IP信息轉發給服務端。配置如下:
location / {
proxy_set_header X-Real-IP $remote_addr;
}
服務器(NETCore)去獲取IP的方法如下:
string useraddress = Request.Headers["X-Real-IP"].FirstOrDefault();