作者: whooyun发表于: 2024-10-03 23:57
nginx配置
server { listen 443 ssl; server_name fuzhicode.com; ssl_certificate /www/server/panel/vhost/cert/fuzhicode.com/fullchain.pem; ssl_certificate_key /www/server/panel/vhost/cert/fuzhicode.com/privkey.pem; location / { proxy_pass http://127.0.0.1:8080; # 反向代理到 Tomcat proxy_set_header Host $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; # 传递协议(http 或 https) # 不使用 X-Forwarded-Port # 直接在子过滤中处理 http:// 替换为 https://,这种方式如果在并发量非常大的服务中会影响性能 #sub_filter 是 Nginx 中的一个指令,用于在 Nginx 代理或静态文件服务器的响应中执行文本替换。它可以用来动态地修改 HTTP 响应内容,通常用于以下情况: #协议替换:例如,将 http:// 替换为 https://,确保页面中的所有链接和资源引用使用 HTTPS 协议。 #路径修改:例如,调整资源路径,使其指向正确的 CDN 或其他资源位置。 #定制化内容:根据特定需求修改响应内容,例如插入或替换特定的 HTML 标签。 sub_filter 'http://' 'https://'; sub_filter_once off; #允许多次修改 } }tomcat的server.xml 中的host增加配置(有就不需要加),让tomcat正确接收nginx传过来的协议和端口
<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" /> <Valve className="org.apache.catalina.valves.RemoteIpValve" /> <Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="X-Forwarded-For" proxiesHeader="X-Forwarded-By" protocolHeader="X-Forwarded-Proto" />第二种知识点扩展:
nginx需要配置证书,tomcat也配置证书,这种方式比较恶心。还不如直接将域名解析到tomcat上,牺牲部分性能和系统安全性
可以直接在tomcat的server.xml中配置证书
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="路径/到/keystore.jks" keystorePass="your_keystore_password" />
nginx需要做反向代理
server { listen 80; server_name example.com www.example.com; # 自动重定向 HTTP 到 HTTPS return 301 https://$host$request_uri; } server { listen 443 ssl; server_name example.com www.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; location / { proxy_pass https://localhost:8443; # 反向代理到 Tomcat 的 8443 端口 proxy_set_header Host $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; } }