我正在使用Nginx
,我成功地设置了一个简单的(仅限HTTP
)反向代理。作为一个新手,我想知道我需要修改什么来使这个生产准备好。这引出了以下问题:
proxy_set_header
指令,以便我不需要为每个虚拟主机重复一次?X-Forwarded-Proto
,X-Url-Scheme
,X-Forwarded-For
和Host
以外的任何其他重要主机标头修改内容? nginx.conf
:
worker_processes 1;
events {
worker_connections 1024;
}
http {
sendfile on;
gzip on;
# skip log_format/access_log
server {
listen 80;
server_name server1.company.com;
location / {
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Url-Scheme $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://server1; # IP or FQDN would be better here
}
}
server {
listen 80;
server_name server2.company.com;
location / {
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Url-Scheme $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://server2; # IP or FQDN would be better here
}
}
}
任何反馈/指向某个方向都将受到赞赏。
答案 0 :(得分:1)
如果您将所有proxy_set_header
语句放在http
块中,它们将被继承到server
块中,然后继承到location
块中。继承只发生在没有另一个proxy_set_header
语句的块中。有关详细信息,请参阅this document。
或者,将公共语句放入单独的文件中,并使用include
指令将它们拉入配置的任何部分。有关详细信息,请参阅this document。
您应该设置哪些标头取决于您的应用程序。但this article讨论了阻止某些标头传递给代理服务器,例如
proxy_set_header Accept-Encoding "";
并且this article通过以下方式缓解了HTTPoxy漏洞:
proxy_set_header Proxy "";