Nginx反向代理supervisor日志
目录
简介
Supervisor输出的日志在web端可通过ip:9001查看,但是有时候又不想把supervisor的服务暴露出去,这个时候就需要Nginx走反向代理,只把supervisor的输出日志暴露外部查看
但是使用Nginx一般的反向代理配置是完不成这个功能的。
分析
- 一般配置如下:
# 一般的反向代理配置无外乎如下两种,一种比较简单,一种使用较为普遍
server {
listen 8001;
server_name localhost 192.168.2.60;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy pass web & cms
location /web {
#deny all;
# http://127.0.0.1:9001/logtail/local-web
#rewrite ^ http://127.0.0.1:9001/logtail/local-web;
proxy_pass http://127.0.0.1:9001/logtail/local-web;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /cms {
proxy_pass http://127.0.0.1:9001/logtail/local-cms;
}
# deny access to all others
location / {
deny all;
}
}
但是以上配置是不成功的,主要原因在与Nginx默认的http协议为http 1.0,其中http 1.0与1.1最大的区别在于1.0 是不支持keep-alive的,但是supervisor的输出日志是需要keep-alive,所以需要启用http 1.1,同时要支持keep-alive。
- 修改后的配置如下:
server {
listen 8001;
server_name localhost 192.168.2.60;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy pass web & cms
location /web {
#deny all;
# http://127.0.0.1:9001/logtail/local-web
#rewrite ^ http://127.0.0.1:9001/logtail/local-web;
proxy_pass http://127.0.0.1:9001/logtail/local-web;
# http 1.0不支持keep-alive, 1.1支持
proxy_http_version 1.1;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 保持keep-alive
proxy_set_header Connection "";
}
location /cms {
proxy_pass http://127.0.0.1:9001/logtail/local-cms;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
# deny access to all others
location / {
deny all;
}
}
Reference
Nginx系列5之让Nginx支持HTTP1.1
nginx在反向代理HTTP协议的时候,默认使用的是HTTP1.0去向后端服务器获取响应的内容后在返回给客户端。
HTTP1.0和HTTP1.1的一个不同之处就是,HTTP1.0不支持HTTP keep-alive。nginx在后端服务器请求时使用了HTTP1.0同时使用HTTP Header的Connection:Close通知后端服务器主动关闭连接。这样会导致任何一个客户端的请求都在后端服务器上产生了一个TIME-WAIT状态的连接。所以我们需要在Nginx上启用HTTP1.1的向后端发送请求,同时支持Keep-alive。
配置HTTP1.1
http{
''' 省去其他的配置
upstream www{
keepalive 50; # 必须配置,建议50-100之间
'''
}
server {
'''省去其他的配置
location / {
proxy_http_version 1.1; # 后端配置支持HTTP1.1,必须配
proxy_set_header Connection ""; # 后端配置支持HTTP1.1 ,必须配置。
}
'''
}
'''
}
我们增加三个参数keepalive 50,proxy_http_version 1.1 , proxy_set_header Connection 来配置。