詳解Nginx配置SSL證書實(shí)現(xiàn)Https訪問
背景
由于項(xiàng)目需求,安全起見,需要將之前的http接口訪問變成https訪問,所以需要配置SSL證書。項(xiàng)目的架構(gòu)是這樣的:

基本架構(gòu)是硬負(fù)載(ReadWhere)+ 軟負(fù)載(Nginx)+ Tomcat集群,現(xiàn)在的問題是SSl證書要配置在哪里,直接配置在硬負(fù)載上?還是分別配置在Nginx和Tomcat上?還是其他的配置方法呢?
首先在硬負(fù)載上配置放棄了,然后通過在網(wǎng)上查找資料,發(fā)現(xiàn)可以只在Nginx上配置證書,就是說Nginx接入使用Https,而Nginx與Tomcat之間使用Http進(jìn)行銜接,這樣就游了一個(gè)整體思路。
關(guān)于SSL證書
關(guān)于SSL證書這里簡(jiǎn)單進(jìn)行介紹,也是因?yàn)轫?xiàng)目需要,進(jìn)行了簡(jiǎn)單的了解。
SSL證書分為大致分為三種,域名級(jí)(DV)、企業(yè)級(jí)(OV)、增強(qiáng)級(jí)(EV),安全性以及價(jià)格依次增加。根據(jù)自己的需求進(jìn)行選擇,個(gè)人使用可以使用DV,便宜;企業(yè)用的話一般使用OV,特殊情況下使用EV。下面是幾家云服務(wù)商的OV SSL證書的價(jià)格對(duì)比,Symantec和GeoTrust被選用的比較多,都屬于賽門鐵克旗下。
| 云服務(wù)商 | 證書品牌 | 價(jià)格 |
|---|---|---|
| 阿里云 | Symantec | 4000/年 |
| 阿里云 | GeoTrust | 2062.4/年 |
| 騰訊云 | Symantec | 5000/年 |
| 騰訊云 | GeoTrust | 2850/年 |
| 西部數(shù)碼 | Symantec | 3880/年 |
| 西部數(shù)碼 | GeoTrust | 2137/年 |
SSL證書配置
由于Nginx對(duì)于SSL證書配置的支持才使得這種實(shí)現(xiàn)方式成為了可能,不得不感嘆Nginx的強(qiáng)大。
證書準(zhǔn)備
Nginx配置需要.pem/.crt證書 + .key秘鑰,如果您現(xiàn)在擁有的是其他形式的證書,請(qǐng)按照相關(guān)說明轉(zhuǎn)化成要求的證書類型,否則是不能完成證書的配置的。一般購買商家都會(huì)有相應(yīng)的轉(zhuǎn)換工具。
準(zhǔn)備好了之后,將證書和秘鑰放到Nginx的conf目錄下(也就是跟配置文件nginx.conf在同一個(gè)目錄),這里特別需要注意:
- 如果是在linux系統(tǒng)下配置,這就算準(zhǔn)備好了;
- 如果是在windows系統(tǒng)下,需要將.key秘鑰文件中的密碼去除,否則就會(huì)導(dǎo)致配置之后Nginx啟動(dòng)不起來,這里是一個(gè)坑,本人就卡在了這里,具體處理方法也很簡(jiǎn)單,在網(wǎng)上下載openssl的windows版本,然后將cmd切換到bin目錄下,執(zhí)行openssl rsa -in server.key -out server2.key,生成的server2.key就是配置需要的秘鑰文件,但是需要將文件名改成server.key。
修改Nginx配置文件
以下是我nginx.conf配置文件的局部,端口著迷沒有使用默認(rèn)的443,而是改成了8185,根據(jù)您的需要進(jìn)行修改即可,其他配置基本上按照下面就沒問題。
server {
listen 8185;
server_name localhost;
ssl on;
ssl_certificate server.pem;
ssl_certificate_key server.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM;
ssl_prefer_server_ciphers on;
location / {
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_connect_timeout 5;
proxy_send_timeout 5;
proxy_read_timeout 5;
proxy_pass http://qlddm_server;
}
修改Tomcat配置文件
雖然不需要在Tomcat配置證書,但是仍然需要修改一下Tomcat的配置Server.xml配置文件,具體包含兩個(gè)地方:
<Connector
executor="tomcatThreadPool"
port="7083"
protocol="org.apache.coyote.http11.Http11Nio2Protocol"
connectionTimeout="20000"
maxConnections="8000"
redirectPort="8185"
proxyPort="8185"
enableLookups="false"
acceptCount="100"
maxPostSize="10485760"
compression="on"
disableUploadTimeout="true"
compressionMinSize="2048"
acceptorThreadCount="2"
compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript"
URIEncoding="utf-8"
/>
需要將redirectPort和proxyPort都修改為您的Nginx監(jiān)聽端口號(hào)。
<Valve className="org.apache.catalina.valves.RemoteIpValve"
remoteIpHeader="X-Forwarded-For"
protocolHeader="X-Forwarded-Proto"
protocolHeaderHttpsValue="https" httpsServerPort="8185"/>
需要增加以上的Value標(biāo)簽,注意httpsServerPort也需要修改為Nginx監(jiān)聽端口號(hào)。
寫在最后
至此,關(guān)于SSL的配置基本上就完成了,啟動(dòng)Nginx以及Tomcat容器之后,不出意外應(yīng)該就可以通過Https正常訪問了。另外想說的是,由于本人工作場(chǎng)景是一個(gè)硬負(fù)載均衡兩臺(tái)服務(wù)器,所以相同的配置需要在兩臺(tái)服務(wù)器上分別做一次。本文僅供參考,如對(duì)您有所幫助,實(shí)乃萬幸,也希望大家多多支持腳本之家。
- Nginx 下配置SSL證書的方法
- Nginx配置SSL證書監(jiān)聽443端口
- nginx配置SSL證書實(shí)現(xiàn)https服務(wù)的方法
- Linux下Nginx安全證書ssl配置方法
- Nginx配置SSL證書出錯(cuò)解決方案
- nginx配置ssl證書實(shí)現(xiàn)https訪問的示例
- Nginx配置SSL自簽名證書的方法
- nginx配置SSL/TLS證書的實(shí)現(xiàn)步驟
- Nginx配置SSL證書的方法步驟
- Nginx 域名SSL證書配置(網(wǎng)站 http 升級(jí)為 https)
- Nginx實(shí)現(xiàn)自簽名SSL證書生成與配置實(shí)現(xiàn)
- Nginx更新SSL證書的實(shí)現(xiàn)步驟
相關(guān)文章
nginx啟動(dòng)、配置及測(cè)試圖文詳解(全網(wǎng)最全)
nginx是一個(gè)輕量級(jí)的網(wǎng)頁服務(wù)器、方向代理服務(wù)器和電子郵件代理服務(wù)器,具有配置靈活、靜態(tài)資源高并發(fā)、系統(tǒng)資源占用少、擁有緩存服務(wù)等優(yōu)點(diǎn),這篇文章主要給大家介紹了關(guān)于nginx啟動(dòng)、配置及測(cè)試的相關(guān)資料,需要的朋友可以參考下2024-02-02
分析nginx日志并屏蔽采集者ip(nginx屏蔽ip配置實(shí)例)
這篇文章主要介紹了分析nginx日志并屏蔽采集者ip(nginx屏蔽ip配置實(shí)例),本文先是講解了分析需要屏蔽日志的方法,然后講解了Nginx中屏蔽IP的配置方法,需要的朋友可以參考下2015-02-02
利用Nginx反向代理與負(fù)載均衡搭建多人測(cè)試環(huán)境詳解
這篇文章主要介紹了利用Nginx反向代理與負(fù)載均衡搭建多人測(cè)試環(huán)境的相關(guān)資料,文中介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。2017-04-04
Nginx 負(fù)載均衡實(shí)現(xiàn)上游服務(wù)健康檢查功能
這篇文章主要介紹了Nginx 負(fù)載均衡實(shí)現(xiàn)上游服務(wù)健康檢查,演示如何通過 nginx_upstream_check_module 實(shí)現(xiàn)負(fù)載均衡上游服務(wù)器的故障轉(zhuǎn)移,需要的朋友可以參考下2024-06-06
Nginx實(shí)現(xiàn)404頁面的方法小結(jié)
這篇文章主要介紹了Nginx實(shí)現(xiàn)404頁面的方法小結(jié),需要的朋友可以參考下2017-08-08
nginx重寫rewrite基礎(chǔ)及實(shí)例分享
這篇文章主要介紹了nginx重寫rewrite基礎(chǔ)及實(shí)例分享,需要的朋友可以參考下2016-04-04
Nginx中l(wèi)ocation proxy_pass加與不加/的區(qū)別說明
本文總結(jié)了Nginx配置中的location匹配規(guī)則和proxy_pass用法,包括前綴匹配、精確匹配、正則表達(dá)式匹配、通配符匹配以及proxy_pass的配置細(xì)節(jié)2024-12-12
nginx使用nginx-rtmp-module模塊實(shí)現(xiàn)直播間功能
做的過程出現(xiàn)很多問題,環(huán)境其實(shí)就需要nginx就可以,然后就是在播放的問題,m3u8的格式,mac直接訪問就支持,蘋果系統(tǒng)原生H5支持m3u8,還有就是手機(jī)直接訪問也支持!但是其他其他系統(tǒng)PC端不支持,嘗試了好多都不行,最后終于找到了一個(gè)支持m3u8格式H5播放2017-10-10

