nginx配置多個tomcat並設置ssl證書,將http訪問改成https訪問解決訪問站點提示鏈接不安全的問題

需求是這樣的:兩個老項目了,現在http訪問老有廣告彈出或者提示網站鏈接不安全。這樣很不友好,本來網站流量就少,這樣的提示或者廣告,用戶很反感。
查閱資料得知,需要搞ssl配置,我的服務器是在騰訊雲買的,在上面直接找到ssl證書管理
在這裏插入圖片描述
你要是沒有證書的自己點申請免費證書就行。
這些個操作搞定後,點擊右面的下載,把證書下載到本地。
因爲的我的項目是用的nginx負載均衡tomcat做的,所以找到對應的證書。我的兩個域名s.jfq.com和jf3q.com其實是兩個tomcat,但都是在一個服務器上的。也就是說兩個都指定到同一個IP,只是利用nginx分配了不同的端口。所以我申請了兩個證書。
tomcat的配置這裏就省略了
最關鍵的就是nginx的配置,
第一步:上傳證書文件
先把咱下載的證書包括.crt和.key文件上傳到nginx目錄下的,我這邊新建一個目錄ssl.把爭證書都放在了這裏。(我這裏用的是xftp工具,當然有的人習慣用winscp,這個都無所謂)
在這裏插入圖片描述
第二步:配置nginx
在conf找到nginx.conf配置文件,修改之前先備份一份,萬一出問題還可以還原
upstream api{
server localhost:8090;#tomcat1
}
upstream study{
server localhost:8089;#tomcat2
}
//以上是我的兩個tomcat,我這裏開的端口分別是8090和8089,下面是http協議這塊的配置,我直接重定向到https的協議中去。關鍵性代碼:rewrite ^(.) https://api.jf3q.com$1 permanent;
注意這個api.jf3q.com這個是我起的server_name的名字,根據需要自定義就行了。
server {
listen 80;
server_name api.jf3q.com;
rewrite ^(.
) https://api.jf3q.com$1 permanent;

}
server {
    listen       80;
    server_name  s.jf3q.com;
rewrite ^(.*) https://s.jf3q.com$1 permanent;	
    
}

接下來就是https模塊的配置。

server {
listen 443 ssl;
server_name api.jf3q.com;
ssl on;

    ssl_certificate      /usr/local/nginx/ssl/1_api.jf3q.com_bundle.crt;#對應的ssl證書存放的位置,有的可能是.pem文件
    ssl_certificate_key  /usr/local/nginx/ssl/2_api.jf3q.com.key;

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;
 #access_log  logs/host.access.log  main;	
location ~ .*\.(jsp|html|htm|do|js|action)?$  {

        proxy_pass  http://api; #這裏是訪問制定的tomcat1
		
        index index.htm index.html index.jsp;
    }
location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|js|css|xml)$ {
    root /opt/webapps/jf_api;#這裏是因爲我的項目代碼(war包)不是直接放到tomcat的wepapps下。所以我這裏配置了下war包的位置,如果你是直接war包扔到webapps下運行的那種就沒不要配置這個了。
    expires 7d;		
    }
error_page   500 502 503 504  /50x.html;
location = /50x.html {
      root   html;
}
}

#以下是tomcat2項目二的https配置,和上面的類似,我就不備註解釋了
server {
listen 443 ssl;
server_name s.jf3q.com;
ssl on;

    ssl_certificate      /usr/local/nginx/ssl/1_s.jf3q.com_bundle.crt;
    ssl_certificate_key  /usr/local/nginx/ssl/2_s.jf3q.com.key;

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

location ~ .*\.(jsp|html|htm|do|js|action)?$  {

        proxy_pass  http://study; 
   			
        index index.htm index.html index.jsp;
    }
location ~ .*\.(zip|doc|docx|gif|jpg|jpeg|bmp|png|ico|js|css|xml|ttf|woff)$ {
    root /opt/webapps/jfstudy;
    expires 7d;		
    }
error_page   500 502 503 504  /50x.html;
location = /50x.html {
      root   html;
}
location = / {
        root  /opt/webapps/jfstudy;
    index index.html;
    }
}

第三步:驗證nginx.conf是否正確。
在這裏插入圖片描述
如果有這樣的提示說明就ok 了。
當然有的人沒安裝ssl環境啥的,那個百度解決吧,這裏不贅述了。有問題可以聯繫我。
第四步:重啓nginx就ok了。
在這裏插入圖片描述
在這裏插入圖片描述
之前這裏的提示是鏈接不安全,涉及到支付密碼啥的不要外泄,是不是很不爽。

這樣的改動是最少的,兩個項目已經都變成https訪問的了。基本沒動項目的代碼。當然如果是跨域訪問的項目,就是前後端分離的項目,就需要稍微動一下項目代碼。
因爲裏面的前端頁面訪問接口的時候都是請求的http的形式跨域訪問接口。這會要做的就是把前端訪問接口的時候,那個http的寫法改成https就可以了。否則會出現跨域問題,訪問接口無法帶回數據。
還有什麼問題不懂的可以聯繫我的qq:1913284695.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章