解決nginx部署https後,原tomcat部署的javaweb專案http不能正常載入js、css資源問題
阿新 • • 發佈:2019-01-28
公司做的小程式專案到部署的時候發現必須要用https協議,這個時候就在阿里雲上申請了免費版本的SSL證書,這裡證書的申請就不做介紹了,下面直接看怎麼處理資源載入問題,從nginx和tomcat的配置檔案入手。
- nginx配置vhost.conf
反向代理服務1 upstream monitor_server { server 127.0.0.1:7080;//代理7080埠 } server { listen 443 ssl; server_name www.xxx.cn;//你的域名 ssl_certificate /home/xxx.crt;//crt證書,我放在home檔案下 ssl_certificate_key /home/xx.key;//key ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2;//這個TLSv1.2必須大於1.2,不然有的檢測不通過 ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; error_page 497 https://$host$uri$args; location /專案名{ proxy_pass http://monitor_server/專案名 ; proxy_set_header Host $host; proxy_connect_timeout 4s; proxy_read_timeout 7200s; proxy_send_timeout 12s; proxy_http_version 1.1; 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; client_max_body_size 100m; root html; index index.jsp index.html; } location /{ proxy_pass http://monitor_server/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_redirect http:// $scheme://; #做https跳轉 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; #反向代理時透傳給後端tomcat,使用者使訪問協議,tomcat後面也需要新增配置接收此引數 client_max_body_size 100m; root html; index index.jsp index.html; } } server { listen 80;//監聽80埠 server_name 你的域名;//用的是www.XXX.cn二級域名 location /{ rewrite ^(.*)$ https://$host$1 last;//這裡是強制跳轉https } }
2.nginx的配置檔案nginx.conf
在nginx.conf最下面新增
########################## vhost #############################
include vhost.conf;//引入上面的檔案,這個是在同一個資料夾裡
3.接下來配置tomcat的server.xml檔案
修改1 <Connector port="7080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="7443" proxyPort="443"/>//加一個proxyPort="443"代理埠
修改2
在host標籤里加一句
<Valve className="org.apache.catalina.valves.RemoteIpValve"
remoteIpHeader="X-Forwarded-For"
protocolHeader="X-Forwarded-Proto"
protocolHeaderHttpsValue="https"/>//大概表示tomcat也仿https請求,這樣原始碼就不需要改的
重啟tomcat和nginx,然後輸入專案地址就正常訪問了,最後注意安全組的埠是否開啟