nginx 之 注意事项
来源:互联网 发布:当前网络安全形势 编辑:程序博客网 时间:2024/06/07 05:34
1。识别 X-Forwarded- style headers:
nginx 设置的X-Forwarded- 格式的header,如 X-Forwarded-Proto,若要让被代理的web服务器自动识别,则还需要被代理web服务器做相应的设置,如jetty的设置如下
若要让jetty识别 X-Forwarded- 格式的header,如X-Forwarded-Proto,则需要在jetty.xml文件中 httpConfig设置节点打开配置addCustomizer:
如:
<New id="httpConfig" class="org.eclipse.jetty.server.HttpConfiguration">
<Set name="secureScheme">https</Set>
<Set name="securePort"><Property name="jetty.secure.port" default="8443" /></Set>
........
<!-- Uncomment to enable handling of X-Forwarded- style headers -->
<Call name="addCustomizer">
<Arg><New class="org.eclipse.jetty.server.ForwardedRequestCustomizer"/></Arg>
</Call>
</New>
作用:可以识别X-Forwarded- 形式的header,比如X-Forwarded-Proto。场景:
nginx 做反向代理访问jetty,外部访问nginx采用https协议,而nginx代理jetty是采用http,
nginx 通过 proxy_pass http://bossms 反向代理bossms服务,且设置X-Forwarded-Proto: proxy_set_header X-Forwarded-Proto $scheme。nginx 配置如下:
upstream bossms {
server 127.0.0.1:8010 weight=1;
}
server {
listen 443 ssl;
listen 1002 ssl;
#server_name localhost;
ssl_certificate ssl/server.crt;
ssl_certificate_key ssl/server.key;
#ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
#ssl_ciphers HIGH:!aNULL:!MD5;
#ssl_prefer_server_ciphers on;
location / {
#proxy_redirect ~^http://([^:]+)(:\d+)?(.*)$ https://$1$2$3;
proxy_pass http://bossms;
#proxy_set_header Host $http_host;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
现在假设jetty要返回一个重定向登陆页面,如果没有开启addCustomizer,则因为jetty无法识别X-Forwarded-Proto,所以jetty 识别出的网络协议是http (因为nginx访问jetty时路径:http://bossms),因此302返回的重定向location是http://bossms/login.html。如果开启了addCustomizer,则jetty识别的协议是https,因此返回的重定向location是https://bossms/login.html。
也可以通过proxy_redirect ~^http://([^:]+)(:\d+)?(.*)$ https://$1$2$3; 方式将被代理服务器返回的重定向的http协议的location重定向为https协议的location。
备注:nginx 会处理被代理服务器返回的url,如果返回的url域名是nginx配置的upstream,则会将该域名替换为访问该nginx时的域名,如:访问nginx 的url是:https://192.168.11.24:1002, jetty重定向返回的locaiton是https://bossms/login.html,因为bossms是nginx中配置的upstream,nginx将locaton替换为:https://192.168.11.24:1002/login.html。
如果nginx中设置proxy_set_header Host $http_host; 则jetty中会识别Host 这个header 的值是访问nginx是的域名和端口号,即此时jetty识别的Host 是 :192.168.11.24:1002, 因此此时返回的重定向的location = http://192.168.11.24:1002/login.html (未开启addCustomizer时) 或者 location = https://192.168.11.24:1002/login.html (开启addCustomizer时)。
2.
0 0
- nginx 之 注意事项
- Linux(Centos)之安装Nginx及注意事项
- Linux(Centos)之安装Nginx及注意事项
- Linux(Centos)之安装Nginx及注意事项
- Linux(Centos)之安装Nginx及注意事项
- 【Linux】Centos之安装Nginx及注意事项
- 【Linux】Centos之安装Nginx及注意事项
- 【Linux】Centos之安装Nginx及注意事项
- 【Linux】Centos之安装Nginx及注意事项
- 【Linux】Centos之安装Nginx及注意事项
- 【Linux】Centos之安装Nginx及注意事项
- Linux(Centos)之安装Nginx及注意事项
- Linux(Centos)之安装Nginx及注意事项
- Linux(Centos)之安装Nginx及注意事项
- Linux(Centos)之安装Nginx及注意事项
- Linux(Centos)之安装Nginx及注意事项
- Nginx--Linux(Centos)之安装Nginx及注意事项
- Linux(Centos)之安装Nginx及注意事项(转载)
- 最终一致性算法Gossip简介
- php 格式化字节大小
- 关于营改增
- Qt Quick图形效果
- 函数指针作为参数传递
- nginx 之 注意事项
- iOS代码片段
- 分析Android引起的“电视智能化”之TV用UI的现状与未来
- ZigBee协议栈看门狗
- 多选框是否选中、div强制换行、首行缩进、鼠标手状
- 初尝渗透2
- js 正则表达式 贪婪与惰性
- MVP设计模式进行Android应用开发
- AXI Stream接口,AXI 流接口规范