Nginx接收Http協(xié)議請求轉(zhuǎn)發(fā)使用Https協(xié)議的問題
緣起
公司使用阿里的apigateway,規(guī)定不太友好,同是SIT環(huán)境,A系統(tǒng)的SIT1環(huán)境居然不能調(diào)用B系統(tǒng)的SIT2環(huán)境的接口。因為各個系統(tǒng)之間部署的SIT環(huán)境數(shù)量不同A系統(tǒng)可能只有1套,B系統(tǒng)可能有8套,這樣的話,可能會隨時切換調(diào)用B系統(tǒng)的環(huán)境,管理員不允許,于是想著用Nginx做下轉(zhuǎn)發(fā)。因為A系統(tǒng)調(diào)用B系統(tǒng)是內(nèi)部調(diào)用,不計劃使用HTTPS,因為還要去申請證書,但是B系統(tǒng)調(diào)用入口必須使用HTTPS,這樣就要求Nginx可以接收HTTP協(xié)議的請求,轉(zhuǎn)發(fā)出去的協(xié)議是HTTPS。
第一次配置Nginx
server { listen 10000; server_name 192.168.1.2; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location / { proxy_pass https://aaa.bbb.com:9000; } }
以為這樣就可以直接轉(zhuǎn)發(fā)了,但是執(zhí)行nginx -t
直接報錯:
nginx: [emerg] https protocol requires SSL support in /data/nginx/conf/nginx.conf:224
nginx: configuration file /data/nginx/conf/nginx.conf test failed
224行就是我上面的proxy_pass https://aaa.bbb.com:9000;
這一行
搜了一下說是nginx當時編譯的時候沒有http_ssl_module
模塊,使用nginx -V
查看一下當時編譯的參數(shù):
nginx version: nginx/1.21.5
built by gcc 4.8.5 (SUSE Linux)
configure arguments: --prefix=/data/nginx --with-pcre=/data/software/pcre-8.21 --with-zlib=/data/software/zlib-1.2.11 --with-openssl=/etc/ssl
果然沒有http_ssl_module
模塊,于是決定重新編譯一下nginx。
重新編譯Nginx
注意:我的輸出是/data/nginx
,和當前正在跑的Nginx是同一個目錄,先使用nginx -s stop
停止nginx,然后備份conf/nginx.conf
文件,防止被覆蓋。
先安裝依賴:pcre-8.21
,zlib-1.2.11
,openssl-1.0.2t
我都是下載的源碼,然后編譯并安裝的
# pcre-8.21 使用以下命令 cd pcre-8.21 && ./configure && make && make install # zlib-1.2.11 使用以下命令 cd zlib-1.2.11 && ./configure && make && make install # openssl-1.0.2t 比較特殊 使用 cd openssl-1.0.2t && ./config && make && make install
進入Nginx源碼目錄然后使用以下命令configure:
./configure --prefix=/data/nginx --with-pcre=/data/software/pcre-8.21 --with-zlib=/data/software/zlib-1.2.11 --with-openssl=/data/software/openssl-1.0.2t --with-http_ssl_module
然后執(zhí)行編譯和安裝:
make && make install
重啟Nginx
編譯完成后發(fā)現(xiàn)之前的Nginx二進制文件變成了nginx.old
,新的Nginx文件叫nginx
,給這個nginx
二進制加執(zhí)行權(quán)限,然后執(zhí)行
nginx -t
此時不再報錯,提示成功:
nginx: the configuration file /data/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /data/nginx/conf/nginx.conf test is successful
然后查看conf/nginx.conf
,發(fā)現(xiàn)沒有被覆蓋,可以直接啟動Nginx了:
nginx -c /data/nginx/conf/nginx.conf
啟動完成后用ps
命令查看以下進程果然在。
然后使用postman測試,發(fā)現(xiàn)可以正確轉(zhuǎn)發(fā),大功告成。
到此這篇關(guān)于Nginx接收Http協(xié)議請求轉(zhuǎn)發(fā)使用Https協(xié)議的文章就介紹到這了,更多相關(guān)Nginx接收Http協(xié)議請求內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx實現(xiàn)高可用集群構(gòu)建(Keepalived+Haproxy+Nginx)
為什么需要搭建Nginx集群?為了防止Nginx單點故障造成服務器癱瘓,本文介紹了Nginx實現(xiàn)高可用集群構(gòu)建(Keepalived+Haproxy+Nginx),感興趣的可以了解一下2021-05-05詳解Nginx + Tomcat 反向代理 負載均衡 集群 部署指南
Nginx是一種服務器軟件,也是一種高性能的http和反向代理服務器,本篇文章主要介紹了Nginx + Tomcat 反向代理 負載均衡 集群 部署指南,有興趣的可以了解一下。2016-12-12Nginx 實現(xiàn)會話保持的方式配置小結(jié)
本文主要介紹了在NGINX中實現(xiàn)會話保持的幾種常見方法,包括IP哈希、基于Cookie的會話保持、基于URL參數(shù)的會話保持及使用第三方的nginx-sticky-module模塊,感興趣的可以了解一下2024-11-11前端部署項目后nginx轉(zhuǎn)發(fā)接口404(頁面正常)詳解
一個網(wǎng)站項目,肯定是避免不了404頁面的,下面這篇文章主要給大家介紹了關(guān)于前端部署項目后nginx轉(zhuǎn)發(fā)接口404(頁面正常)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-06-06nginx配置ssl實現(xiàn)https訪問的步驟(適合新手)
這篇文章主要給大家介紹了關(guān)于nginx配置ssl實現(xiàn)https訪問的相關(guān)資料,這個教程非常適合新手小白,文中通過示例代碼將實現(xiàn)的方法一步步介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧2018-12-12