nginx配置https石窑,反向代理給tomcat

nginx配置https反向代理給tomcat(tomcat無需配https)

最終結(jié)果:一臺機器中的nginx將所有https請求全部代理給tomcat,將80端口的http請求永久重定向到https路徑富稻,實現(xiàn)全站的https筒狠。防火墻Firewall開放https和http服務(wù),這樣用戶只能通過nginx訪問網(wǎng)站抛蚁,無法直接訪問到tomcat陈醒,避免了用戶直接用http訪問tomcat。

  • 關(guān)于nginx的安裝和centos7的firewall防火墻的使用可以看我之前的文章

  • 使用openssl生成私鑰和證書瞧甩,編譯nginx的https模塊時使用的就是openssl

openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt

req是openssl證書請求的子命令
-newkey rsa:2048 -keyout private_key.pem 表示生成私鑰(PKCS8格式)
-nodes 表示私鑰不加密钉跷,若不帶參數(shù)將提示輸入密碼
-x509表示輸出證書
-days36500 為100年有效期,此后根據(jù)提示輸入證書擁有者信息
-keyout 代表私鑰全路徑
-out 代表證書全路徑
  • 編輯nginx的配置文件肚逸,參考的nginx官網(wǎng)中對https模塊配置的說明爷辙,將所有https的請求都通過http反向代理給tomcat,這里僅保留了最核心的功能配置朦促,ssl的緩存優(yōu)化設(shè)置刪掉了膝晾。如果不加其中的四個頭信息,在tomcat中無法獲知到底請求到底是從哪來的
server {
    listen              443 ssl;
    server_name         localhost;
    ssl_certificate     /usr/local/nginx-1.12.2/nginx1/ssl/nginx.crt;
    ssl_certificate_key /usr/local/nginx-1.12.2/nginx1/ssl/nginx.key;
    location / {
        proxy_pass   http://localhost:8080;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
server {
    listen       80;
    server_name  localhost;
    # 返回301狀態(tài)碼思灰,永久重定向
    rewrite ^(.*)$  https://$host$1 permanent;
}
  • 這樣配置完之后其實已經(jīng)實現(xiàn)了全站https玷犹,但是在tomcat中使用request.getRequestURL()時,顯示的是http開頭的路徑,因為tomcat接收到的都是nginx的http請求歹颓。需要配置tomcat的server.xml坯屿,在engine節(jié)點下加入:
<Valve className="org.apache.catalina.valves.RemoteIpValve"
       remoteIpHeader="x-forwarded-for"
       protocolHeaderHttpsValue="https"
       protocolHeader="x-forwarded-proto" />
//源碼如下:  
if (protocolHeader != null) {  
    String protocolHeaderValue = request.getHeader(protocolHeader);  
    if (protocolHeaderValue == null) {  
        // don't modify the secure,scheme and serverPort attributes  
        // of the request  
    } else if (protocolHeaderHttpsValue.equalsIgnoreCase(protocolHeaderValue)) {  
        request.setSecure(true);  
        // use request.coyoteRequest.scheme instead of request.setScheme() because request.setScheme() is no-op in Tomcat 6.0  
        request.getCoyoteRequest().scheme().setString("https");  
          
        request.setServerPort(httpsServerPort);  
    } else {  
        request.setSecure(false);  
        // use request.coyoteRequest.scheme instead of request.setScheme() because request.setScheme() is no-op in Tomcat 6.0  
        request.getCoyoteRequest().scheme().setString("http");  
          
        request.setServerPort(httpServerPort);  
    }  
}  
  • 修改AccessLogValve,否則access日志中的ip都是nginx的ip巍扛,%{X-Real-IP}i中的i代表從input中取值领跛,取請求頭中X-Real-IP的值
<!--
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
       prefix="localhost_access_log" suffix=".txt"
       pattern="%h %l %u %t &quot;%r&quot; %s %b" />
-->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
       prefix="localhost_access_log" suffix=".txt"
       pattern="%{X-Real-IP}i %l %u %t &quot;%r&quot; %s %b" />
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市撤奸,隨后出現(xiàn)的幾起案子吠昭,更是在濱河造成了極大的恐慌,老刑警劉巖胧瓜,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件矢棚,死亡現(xiàn)場離奇詭異,居然都是意外死亡府喳,警方通過查閱死者的電腦和手機蒲肋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钝满,“玉大人兜粘,你說我怎么就攤上這事⊥溲粒” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵碎捺,是天一觀的道長路鹰。 經(jīng)常有香客問我,道長牵寺,這世上最難降的妖魔是什么悍引? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮帽氓,結(jié)果婚禮上趣斤,老公的妹妹穿的比我還像新娘。我一直安慰自己黎休,他們只是感情好浓领,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著势腮,像睡著了一般联贩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上捎拯,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天泪幌,我揣著相機與錄音,去河邊找鬼。 笑死祸泪,一個胖子當著我的面吹牛吗浩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播没隘,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼懂扼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了右蒲?” 一聲冷哼從身側(cè)響起阀湿,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瑰妄,沒想到半個月后陷嘴,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡翰撑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年罩旋,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片眶诈。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瓜饥,靈堂內(nèi)的尸體忽然破棺而出逝撬,到底是詐尸還是另有隱情,我是刑警寧澤乓土,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布宪潮,位于F島的核電站,受9級特大地震影響趣苏,放射性物質(zhì)發(fā)生泄漏狡相。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一食磕、第九天 我趴在偏房一處隱蔽的房頂上張望尽棕。 院中可真熱鬧,春花似錦彬伦、人聲如沸滔悉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽回官。三九已至,卻和暖如春搂橙,著一層夾襖步出監(jiān)牢的瞬間歉提,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留苔巨,地道東北人弯屈。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像恋拷,于是被迫代替她去往敵國和親资厉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容