1. 程式人生 > >解決nginx部署https後,原tomcat部署的javaweb專案http不能正常載入js、css資源問題

解決nginx部署https後,原tomcat部署的javaweb專案http不能正常載入js、css資源問題

公司做的小程式專案到部署的時候發現必須要用https協議,這個時候就在阿里雲上申請了免費版本的SSL證書,這裡證書的申請就不做介紹了,下面直接看怎麼處理資源載入問題,從nginx和tomcat的配置檔案入手。

  1. 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,然後輸入專案地址就正常訪問了,最後注意安全組的埠是否開啟