国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用nginx提供https端點(diǎn),實(shí)現(xiàn)不修改瀏覽器地址(不觸發(fā)重定向)轉(zhuǎn)發(fā)網(wǎng)絡(luò)流量,附生成自簽ssl證書(shū)最簡(jiǎn)單的方法(2個(gè)命令)

這篇具有很好參考價(jià)值的文章主要介紹了使用nginx提供https端點(diǎn),實(shí)現(xiàn)不修改瀏覽器地址(不觸發(fā)重定向)轉(zhuǎn)發(fā)網(wǎng)絡(luò)流量,附生成自簽ssl證書(shū)最簡(jiǎn)單的方法(2個(gè)命令)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

近日筆者需要實(shí)現(xiàn)一個(gè)網(wǎng)絡(luò)流量轉(zhuǎn)發(fā)的需求。要求很簡(jiǎn)單:將瀏覽器的請(qǐng)求轉(zhuǎn)發(fā)到一個(gè)指定的域名,需要提供一個(gè)https端口并且把http端口轉(zhuǎn)發(fā)到https端口。由于筆者對(duì)nginx的認(rèn)知有限,因此磕磕絆絆研究了一陣,將結(jié)果寫(xiě)出來(lái),以供其他有類似需求的同學(xué)參考對(duì)照。

1. 使用docker拉起nginx服務(wù)

nginx的官方docker在這里。拉起nginx就一個(gè)命令:

sudo docker run -d -v /home/linmao/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/linmao/nginx/cert:/cert/ -p 8000:80 -p 4443:443 nginx

這里解釋一下幾個(gè)參數(shù):

參數(shù) 說(shuō)明
-v /home/linmao/nginx/nginx.conf:/etc/nginx/nginx.conf nginx 的配置文件
-v /home/linmao/nginx/cert:/cert/ 適配https端的密鑰
-p 8000:80 把本機(jī)的8000端口映射到nginx的http端口80
-p 4443:443 把本機(jī)的4443端口映射到nginx的https端443

2. 自簽https證書(shū)

上邊用到了https端點(diǎn),需要用到ssl證書(shū),到阿里云買(mǎi)一個(gè)證書(shū)要一年幾百塊,所以自己簽一個(gè),要多少有多少,缺點(diǎn)就是瀏覽器一看這證書(shū)感覺(jué)沒(méi)什么權(quán)威性,會(huì)讓用戶先進(jìn)一個(gè)安全警告頁(yè)面。不過(guò)先湊合用著吧。下邊的方法是筆者見(jiàn)過(guò)的最快生成證書(shū)的方法(僅需兩個(gè)命令)。

首先,生成一個(gè)根密鑰和csr,根據(jù)提示填寫(xiě)相應(yīng)的信息:

$ openssl req  -newkey rsa:2048 -nodes -keyout self_key.pem  -out self_csr.pem
Generating a RSA private key
................................................+++++
.............................+++++
writing new private key to 'self_key.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:Guangdong
Locality Name (eg, city) []:guangzhou
Organization Name (eg, company) [Internet Widgits Pty Ltd]:haha
Organizational Unit Name (eg, section) []:haha
Common Name (e.g. server FQDN or YOUR name) []:haha
Email Address []:haha@haha.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

$ ls
self_csr.pem  self_key.pem

接著給csr簽名:

$ openssl x509 -signkey self_key.pem -in self_csr.pem  -req -days 365 -out self_cert.pem
Signature ok
subject=C = CN, ST = Guangdong, L = guangzhou, O = haha, OU = haha, CN = haha, emailAddress = haha@haha.com
Getting Private key

$ ls
self_cert.pem  self_csr.pem  self_key.pem

根密鑰就是self_key.pem,證書(shū)就是self_cert.pem,這兩個(gè)要映射到nginx容器里給https端口使用,那個(gè)self_csr.pem可以扔了。

3. nginx配置文件

nginx.conf

work_processes 1;

events {
    worker_connections 64;
}

http {
	# 提供一個(gè)http端口
    server {
    	# 監(jiān)聽(tīng)80端口
        listen 80;
        # 重定向到https端口,這個(gè)操作會(huì)引起瀏覽器地址變成localhost,
        # 但因?yàn)槲覀兒筮吿峁┝薶ttps端口,因此并不會(huì)引起瀏覽器真的去請(qǐng)求localhost。
        rewrite ^(.*) https://localhost$1 permanent;
    }
	# 提供一個(gè)https端口
    server {
    	# 監(jiān)聽(tīng)443端口,注意后邊要加ssl
        listen 443 ssl;
		# 設(shè)置https所需的密鑰
        ssl_certificate /cert/self_cert.pem;
        ssl_certificate_key /cert/self_cert_key.pem;
		# 設(shè)置一個(gè)后端,可根據(jù)uri匹配不同的后端
		# uri匹配規(guī)則 ~ /(.*)$
		# 	~: 以正則表達(dá)式進(jìn)行匹配。
		#	^/(.*)$: 匹配的正則表達(dá)式,匹配uri中的/xxxxxx。uri中后邊這一段xxxxx可以通過(guò)$1獲取。
	    location ~ ^/(.*)$ {
	    	# 把流量轉(zhuǎn)發(fā)到https://www.baidu.com/xxxxx。
	        proxy_pass https://www.baidu.com/$1;
	        # 后邊這些配置可避免觸發(fā)重定向,全都要寫(xiě)。
	        proxy_redirect off;
	        # 使用proxy_set_header可以修改請(qǐng)求頭,nginx提供一些變量可以使用。
	        # $scheme:客戶端請(qǐng)求nginx時(shí)使用的協(xié)議,可為http或https。
	        # $host: 客戶端請(qǐng)求nginx時(shí)使用的ip地址或域名,取決于客戶端通過(guò)ip還是域名發(fā)請(qǐng)求給nginx。
	        # $port: 客戶端請(qǐng)求nginx時(shí)使用的端口。
	        # $http_host: 等同于$host:$port
	        # $proxy_host: 目標(biāo)服務(wù)器,有些上游服務(wù)器會(huì)檢查該頭,把Host頭改為$proxy_host可以避免觸發(fā)一些安全機(jī)制。
	        proxy_set_header Host $proxy_host;
	        # $remote_addr:客戶端ip地址或者上一個(gè)nginx的ip地址(如果請(qǐng)求是由nginx轉(zhuǎn)發(fā)過(guò)來(lái)的)。
	        proxy_set_header X-Real-IP $remote_addr;
	        # $proxy_add_x_forwarded_for: 與X-Forwarded-For配合使用,
	        # 相當(dāng)于把X-Forwarded-For中的內(nèi)容再加上$remote_addr,形成一個(gè)跳轉(zhuǎn)鏈。
	        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	    }
	}
}

更多的nginx變量可以參考這里。啟動(dòng)之后就可以愉快地玩耍了。

999. Nginx踩坑記錄

下邊記錄筆者爬出來(lái)的坑。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-478802.html

  1. 關(guān)閉nginx容器之后,再次啟動(dòng),原來(lái)宿主機(jī)映射的端口失效的問(wèn)題解決
  2. 。。。

到了這里,關(guān)于使用nginx提供https端點(diǎn),實(shí)現(xiàn)不修改瀏覽器地址(不觸發(fā)重定向)轉(zhuǎn)發(fā)網(wǎng)絡(luò)流量,附生成自簽ssl證書(shū)最簡(jiǎn)單的方法(2個(gè)命令)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包