【Tomcat】-- Tomcat + Nginx反向代理https和wss并解决获取客户端真实IP、域名、协议、端口
来源:互联网 发布:流程图绘制软件 编辑:程序博客网 时间:2024/06/05 20:18
刚开始只做了http和ws,由于做小程序必须要https和wss,无奈将服务器http进行https转换,ws做wss转换。
首先我们得申请https证书,请参考前面的博客。
第二全站https和wss化:
以下是我的配置(tomcat已经支持https端口8999,websocket由单独的tomcat提供端口为10000):
server { listen 80; #listen [::]:80; server_name xxx.com; #ws代理 location /webtcpnode/ { proxy_pass http://127.0.0.1:10000; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forward-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } #http强制https的两种方式 #rewrite ^(.*)$ https://$host$1 permanent;① location / {② rewrite ^/(.*) https://$host/$1 redirect; } access_log /home/wwwlogs/xxx.log access; }server { listen 443; #listen [::]:80; server_name dev.smart-ism.com; index index.html index.htm index.php default.html default.htm default.php; root /home/wwwroot/xxx.com; ssl on; ssl_certificate cert/214214075370856.pem; ssl_certificate_key cert/214214075370856.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { proxy_pass https://127.0.0.1:8999; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forward-For $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_redirect off; #include proxy-totomcat.conf; }#wss代理 location /webtcpnode/ { proxy_pass http://127.0.0.1:10000; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forward-For $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; #rewrite /webtcpnode/(.*) /$1 break; proxy_redirect off; } #location / #{ # try_files $uri @apache; #} #location @apache #{ # internal; # proxy_pass http://127.0.0.1:88; # include proxy.conf; #} #location ~ [^/]\.php(/|$) #{ # proxy_pass http://127.0.0.1:88; # include proxy.conf; #} #location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ #{ # expires 30d; #} #location ~ .*\.(js|css)?$ #{ # expires 12h; #} access_log /home/wwwlogs/xxx.com.log access; }
第三修改tomcat获取代理前的客户端信息方式
具体文档:http://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/catalina/valves/RemoteIpValve.html
配置:tomcat的server.xml
Nginx增加以下配置 proxy_set_header Host $host:$server_port; 非80端口 ,用80端口时 不需要$server_port proxy_set_header X-Real-IP $remote_addr; 非必须,添加此项之后可以在代码中通过request.getHeader("X-Real-IP")获取ipproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; Tomcat server.xml配置 重点在这里!<Engine name="Catalina" defaultHost="localhost"> <Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="X-Forwarded-For" protocolHeader="X-Forwarded-Proto" protocolHeaderHttpsValue="https" httpsServerPort="7001"/> 非80端口时,必须增加httpsServerPort配置,不然request.getServerPort()方法返回 443. </Engine>
参考:http://blog.csdn.net/vfush/article/details/51086274
http://blog.csdn.net/xiao__gui/article/details/73733797
阅读全文
1 0
- 【Tomcat】-- Tomcat + Nginx反向代理https和wss并解决获取客户端真实IP、域名、协议、端口
- Jetty/Tomcat + Nginx反向代理获取客户端真实IP、域名、协议、端口
- 通过nginx反向代理,Tomcat获取真实的客户端IP而非服务器IP
- Nginx反向代理Tomcat日志获取真实IP
- Nginx反向代理获取客户端真实IP
- Nginx反向代理获取客户端真实IP
- Nginx反向代理获取客户端真实IP
- Tomcat捕获Nginx反向代理协议IP及端口配置
- 多层nginx代理tomcat获取客户端真实ip
- Tomcat获取Nginx反向代理的客户端IP地址
- nginx反向代理到tomcat,并在request中获取客户端请求ip
- nginx反向代理tomcat获得客户端ip
- IIS tomcat共用80端口解决一个IP多个域名:使用Nginx反向代理方式使两者兼容
- IIS tomcat共用80端口解决一个IP多个域名:使用Nginx反向代理方式使两者兼容
- IIS tomcat共用80端口解决一个IP多个域名:使用Nginx反向代理方式使两者兼容
- nginx 反向代理 取得真实IP和域名
- nginx 反向代理 取得真实IP和域名
- nginx配置ssl协议https +tomcat 非80/443端口反向代理的配置方式
- HTML的标签总结
- CNN结构:用于检测的CNN结构进化-分离式方法
- MySQL重置root密码方法
- Spring的传播行为与隔离级别
- px、em、rem、%、vw、wh、vm等单位有什么区别?
- 【Tomcat】-- Tomcat + Nginx反向代理https和wss并解决获取客户端真实IP、域名、协议、端口
- jenkins之使用git
- C++String fing函数
- 使用tcollector及使用过程中遇到的错误
- c++基础复习之求平均值以及字符串输入输出
- Git的基本操作
- 猜数游戏的一个C++实现
- SSM(SpringMVC Spring Mybatis)三大框架从零开始搭建实例
- c# 控件多屏显示全屏功能