SSL在NGINX的配置方法實踐無需修改tomcat和程式配置

來源:互聯網
上載者:User
SSL方案:
1、NGINX做ssl握手,其與TOMCAT之間仍舊HTTP協議(當NGINX和TOMCAT在同一相對安全的內網時這樣做可以減少SSL握手次數)。NGINX的代理轉寄(proxy_redirect:反向替換proxy_pass或上遊,如TOMCAT返回的URL),從HTTP的替換成HTTPS。可包括多條proxy_redirect配置。注意連接埠號碼如需要替換也要寫入。
2、NGINX強制將接收到的HTTP請求rewrite為HTTPS
3、NGINX做最佳化方案,包括keepalive_timeout,開啟ssl的session緩衝。
4、TOMCAT和項目代碼及設定檔(目前)不需要變更。
5、需要注意的是,程式從HTTP頭部擷取的資訊,包括HTTPS協議,連接埠號碼,客戶IP等,資料是正確的。但,若用request.getScheme();(HTTP or HTTPS)request.isSecure();(是否安全,boolean)request.getRequestURL().toString();(URL,帶協議名)request.getRemoteAddr();(客戶IP地址)等,擷取則是錯誤的,request的資訊有nginx轉寄到tomcat,並未做替換處理,因此擷取到的都是nginx的資訊,如有需要,在tomcat的server.xml設定一個valve。
-------------------------
nginx配置:
(1)、自訂設定檔,放置於/etc/nginx/conf.d檔案夾下,xxx.conf
(2)、引入該檔案nginx/nginx.conf檔案的http模組最後加入include /etc/nginx/conf.d/*.conf
(3)、nginx.conf檔案中做ssl最佳化配置,http模組最後加入
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
(4)、自訂設定檔xxx.conf中做如下配置:
#HTTP serverserver {#監聽連接埠        listen       80;#監聽網域名稱/IP        server_name abc.e-lingcloud.com;#請求的重新導向,該功能的含義及用法請搜尋rewrite,該命令可添加在server、location、if模組下。#本例由於要求轉寄所有80的http請求,因此rewrite放置於server模組下,且location已登出。        rewrite ^(.*) https://$host$1 permanent;        #location / {              # proxy_pass http://192.168.1.111:8080;              # proxy_set_header Host $host;              # proxy_redirect  http://192.168.1.111:8080 http://abc.e-lingcloud.com:59998;              # 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;              # proxy_set_header Upgrade $http_upgrade;              # proxy_set_header Connection "upgrade";       #}}#HTTPS serverserver {#監聽HTTPS預設連接埠443        listen       443;#開啟SSL        ssl on;#監聽網域名稱/IP        server_name abc.e-lingcloud.com;#HTTPS(若不在SSL的模組內,該命令預設為HTTP保持串連的時間長度)保持串連的時間長度,單位秒。具體用法自行搜尋。        keepalive_timeout   70;#SSL認證(公開金鑰),認證產生方法參考購買認證的網站說明,本例中的認證來自於Godaddy,該認證包括中間認證和發給自己的認證。        ssl_certificate     /etc/ssl/private/e-lingcloud.crt;#SSL私密金鑰,該私密金鑰通常在申請認證前產生。記得備份檔案。需要注意的是,私密金鑰非常重要,不可泄露,需要存放在訪問受限的檔案中,當然,nginx主進程必須有讀取密鑰的許可權。私密金鑰和認證可以存放在同一個檔案中。        ssl_certificate_key /etc/ssl/private/e-lingcloud.key;        location / {                proxy_pass http://192.168.1.111:8080;#代理重新導向,作用是將上遊伺服器返回連結中的第一個參數替換為第二個參數。此處比較重要,tomcat和程式不做任何特定配置的話(如tomcat新加valve將http頭資訊賦到request中),上遊伺服器(如tomcat)將返回http協議及其連結,用此處重新導向為https和指定的伺服器網域名稱返回給用戶端。proxy_redirect  http://abc.e-lingcloud.com https://abc.e-lingcloud.com;                proxy_redirect  https://192.168.1.111:8443 https://abc.e-lingcloud.com;                proxy_redirect  http://192.168.1.111:8080 https://abc.e-lingcloud.com;#以下為nginx轉寄給tomcat的時候,將資料加到http頭資訊中。具體參數含義和變數的用法請搜尋。                proxy_set_header Host $host:$server_port;                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;                #proxy_set_header Upgrade $http_upgrade;                #proxy_set_header Connection "upgrade";       }


-----------------------------------------
資料連結及其說明:
nginx的一些配置,需要注意,有錯誤的地方。
http://blog.csdn.net/na_tion/article/details/17334669
nginx與tomcat之間傳遞http,使用request.getScheme()取到的仍為http,需要注意,個人建議程式裡別用request.getScheme,而是取http頭部資訊,用該文章提供的方案需要侵入tomcat做配置。
http://feitianbenyue.iteye.com/blog/2056357
與第二條資料配合,tomcat官網關於valve參數的API。告訴你配置的這幾項作用是什麼。
http://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/catalina/valves/RemoteIpValve.html
與第二條資料配合,第二條資料的靈感出處。需要注意的地方同第二條。
http://han.guokai.blog.163.com/blog/static/136718271201211631456811/

以上就介紹了SSL在NGINX的配置方法實踐無需修改tomcat和程式配置,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.