亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Nginx+Tomcat配置https的實(shí)現(xiàn)

 更新時(shí)間:2025年04月17日 09:38:12   作者:時(shí)光的IT小屋  
本文主要介紹了Nginx+Tomcat配置https的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

自已公司內(nèi)部的系統(tǒng),需要修改為https訪問(wèn),使用Nginx+Tomcat,此文記錄了整個(gè)過(guò)程,因?yàn)橄到y(tǒng)使用了jsp,而且頁(yè)面中大量使用了request.getScheme()+“: //”+request.getServerName()+“:”+request.getServerPort()來(lái)組合URL進(jìn)行數(shù)據(jù)的提交,導(dǎo)致最終界面中出現(xiàn)了http://協(xié)議,為了不改動(dòng)代碼,最終方案采用nginx和tomcat都開(kāi)啟https,由nginx轉(zhuǎn)發(fā)到tomcat的https上,最終完美搭建成功。

一、獲取證書(shū)

如果是互聯(lián)網(wǎng)應(yīng)用,需要向權(quán)威機(jī)構(gòu)申請(qǐng)證書(shū),
此處給出局域網(wǎng)生成私有證書(shū)的方法(在linux下執(zhí)行):
1.創(chuàng)建服務(wù)器證書(shū)密鑰文件 server.key:

 openssl genrsa -des3 -out server.key 1024

輸入密碼,確認(rèn)密碼,自己隨便定義,但是要記住,后面會(huì)用到。
2.創(chuàng)建服務(wù)器證書(shū)的申請(qǐng)文件 server.csr

openssl req -new -key server.key -out server.csr

輸出內(nèi)容為:

 Enter pass phrase for root.key: ← 輸入前面創(chuàng)建的密碼
 Country Name (2 letter code) [AU]:CN ← 國(guó)家代號(hào),中國(guó)輸入CN
 State or Province Name (full name) [Some-State]:HeNan ← 省的全名,拼音
 Locality Name (eg, city) []:ZhengZhou ← 市的全名,拼音
 Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany. ← 公司英文名
 Organizational Unit Name (eg, section) []: ← 可以不輸入
 Common Name (eg, YOUR name) []: ← 此時(shí)不輸入
 Email Address []:admin@mycompany.com ← 電子郵箱,可隨意填
 Please enter the following ‘extra' attributes
 to be sent with your certificate request
 A challenge password []: ← 可以不輸入
 An optional company name []: ← 可以不輸入

3.備份一份服務(wù)器密鑰文件

 cp server.key server.key.org

4.去除文件口令,生成私鑰

 openssl rsa -in server.key.org -out server.key

5.生成證書(shū)文件server.crt(公鑰,會(huì)發(fā)送給瀏覽器)

 openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

6.有用的就是server.key和server.crt文件,下面配置Nginx時(shí)會(huì)用到

二、配置Nginx

修改conf/nginx.conf文件,修改server段的端口監(jiān)聽(tīng)部分

    server {
        #listen       80;
		#比起默認(rèn)的80 使用了443 默認(rèn) 是ssl方式
        listen 443 default ssl;
		#開(kāi)啟  如果把ssl on;這行去掉,ssl寫(xiě)在443端口后面。這樣http和https的鏈接都可以用
        ssl on;
		#證書(shū)(公鑰.發(fā)送到客戶端的)
        ssl_certificate ssl/server.crt;
		#私鑰
        ssl_certificate_key ssl/server.key;

修改反向代理的部分

        location / {
			proxy_pass https://127.0.0.1:8443;
			proxy_redirect              off;
			proxy_set_header            Host $host:$server_port; 
			proxy_set_header            Remote_Addr $remote_addr; 
			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;  
			add_header Content-Security-Policy upgrade-insecure-requests;
            index  index.html index.htm index.jsp;			
        }

將http請(qǐng)求重寫(xiě)為https請(qǐng)求的配置(寫(xiě)在server段內(nèi))

error_page   497  https://$host:$server_port$uri;

三、配置Tomcat,打開(kāi)https請(qǐng)求

修改conf/server.xml文件,打開(kāi)Https的配置段,配置證書(shū)路徑,同時(shí)將server.crt和server.key文件拷貝至Tomcat/ssl目錄下

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https">
        <SSLHostConfig>
            <Certificate  certificateFile="ssl/server.crt" certificateKeyFile="ssl/server.key"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>

四、各類(lèi)問(wèn)題解決

1、將訪問(wèn)https端口的http請(qǐng)求地址重寫(xiě)為https協(xié)議

在nginx.conf文件內(nèi)的server段中,增加對(duì)497狀態(tài)碼的轉(zhuǎn)發(fā)配置

error_page   497  https://$host:$server_port$uri;

原理:當(dāng)站點(diǎn)只允許https訪問(wèn)時(shí),使用http訪問(wèn)時(shí)會(huì)報(bào)出497錯(cuò)誤碼,此時(shí)使用error_page指令將497代碼的URL重定向到https的正確路徑
HTTP CODE 497的官方解釋?zhuān)?br />497 - normal request was sent to HTTPS

2、redirect轉(zhuǎn)發(fā)時(shí)丟失端口號(hào)的處理

網(wǎng)上查到的各種配置中,很多配置中對(duì)Host的設(shè)置使用了h o s t 變量,因?yàn)?host變量,因?yàn)閔ost變量,因?yàn)閔ost中不含端口號(hào)信息,所以會(huì)丟失端口號(hào),解決辦法為修改h o s t 為 host為host為http_post或h o s t : host:host:server_port

proxy_set_header            Host $host:$server_port; 
#這兩種配置都可以,其中$http_post是$http_HEADER的匹配規(guī)則,取的是請(qǐng)求頭中host的屬性值
proxy_set_header            Host $http_host; 

3、Jsp中使用request.getScheme()只得到http問(wèn)題處理

這個(gè)問(wèn)題目前只找到了一種解決方案,就是將Tomcat也開(kāi)啟https協(xié)議,nginx轉(zhuǎn)發(fā)時(shí)使用https://協(xié)議進(jìn)行轉(zhuǎn)發(fā),就能完美解決這個(gè)問(wèn)題。

附表 nginx.conf中可以使用的變量

變量名定義
$arg_PARAMETERGET請(qǐng)求中變量名PARAMETER參數(shù)的值
$args這個(gè)變量等于GET請(qǐng)求中的參數(shù)。例如,foo=123&bar=blahblah;這個(gè)變量只可以被修改
$binary_remote_addr二進(jìn)制碼形式的客戶端地址。
$body_bytes_sent傳送頁(yè)面的字節(jié)數(shù)
$content_length請(qǐng)求頭中的Content-length字段。
$content_type請(qǐng)求頭中的Content-Type字段。
$cookie_COOKIEcookie COOKIE的值。
$document_root當(dāng)前請(qǐng)求在root指令中指定的值。
$document_uri與$uri相同。
$host請(qǐng)求中的主機(jī)頭(Host)字段,如果請(qǐng)求中的主機(jī)頭不可用或者空,則為處理請(qǐng)求的server名稱(chēng)(處理請(qǐng)求的server的server_name指令的值)。值為小寫(xiě),不包含端口。
$hostname機(jī)器名使用 gethostname系統(tǒng)調(diào)用的值
$http_HEADERHTTP請(qǐng)求頭中的內(nèi)容,HEADER為HTTP請(qǐng)求中的內(nèi)容轉(zhuǎn)為小寫(xiě),-變?yōu)開(kāi)(破折號(hào)變?yōu)橄聞澗€),例如:$http_user_agent(Uaer-Agent的值);
$sent_http_HEADERHTTP響應(yīng)頭中的內(nèi)容,HEADER為HTTP響應(yīng)中的內(nèi)容轉(zhuǎn)為小寫(xiě),-變?yōu)開(kāi)(破折號(hào)變?yōu)橄聞澗€),例如: $sent_http_cache_control, $sent_http_content_type…;
$is_args如果$args設(shè)置,值為"?“,否則為”"。
$limit_rate這個(gè)變量可以限制連接速率。
$nginx_version當(dāng)前運(yùn)行的nginx版本號(hào)。
$query_string與$args相同。
$remote_addr客戶端的IP地址。
$remote_port客戶端的端口。
$remote_user已經(jīng)經(jīng)過(guò)Auth Basic Module驗(yàn)證的用戶名。
$request_filename當(dāng)前連接請(qǐng)求的文件路徑,由root或alias指令與URI請(qǐng)求生成。
$request_body這個(gè)變量(0.7.58+)包含請(qǐng)求的主要信息。在使用proxy_pass或fastcgi_pass指令的location中比較有意義。
$request_body_file客戶端請(qǐng)求主體信息的臨時(shí)文件名。
$request_completion如果請(qǐng)求成功,設(shè)為"OK";如果請(qǐng)求未完成或者不是一系列請(qǐng)求中最后一部分則設(shè)為空。
$request_method這個(gè)變量是客戶端請(qǐng)求的動(dòng)作,通常為GET或POST。包括0.8.20及之前的版本中,這個(gè)變量總為main request中的動(dòng)作,如果當(dāng)前請(qǐng)求是一個(gè)子請(qǐng)求,并不使用這個(gè)當(dāng)前請(qǐng)求的動(dòng)作。
$request_uri這個(gè)變量等于包含一些客戶端請(qǐng)求參數(shù)的原始URI,它無(wú)法修改,請(qǐng)查看$uri更改或重寫(xiě)URI。
$scheme所用的協(xié)議,比如http或者是https,比如rewrite ^(.+)$ $scheme://example.com$1 redirect;
$server_addr服務(wù)器地址,在完成一次系統(tǒng)調(diào)用后可以確定這個(gè)值,如果要繞開(kāi)系統(tǒng)調(diào)用,則必須在listen中指定地址并且使用bind參數(shù)。
$server_name服務(wù)器名稱(chēng)。
$server_port請(qǐng)求到達(dá)服務(wù)器的端口號(hào)。
$server_protocol請(qǐng)求使用的協(xié)議,通常是HTTP/1.0或HTTP/1.1。
$uri請(qǐng)求中的當(dāng)前URI(不帶請(qǐng)求參數(shù),參數(shù)位于args,不同于瀏覽器傳遞的args),不同于瀏覽器傳遞的request_uri的值,它可以通過(guò)內(nèi)部重定向,或者使用index指令進(jìn)行修改。不包括協(xié)議和主機(jī)名,例如/foo/bar.html

到此這篇關(guān)于Nginx+Tomcat配置https的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Nginx+Tomcat配置https內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Nginx下Frp強(qiáng)制重定向?yàn)閔ttps配置詳解

    Nginx下Frp強(qiáng)制重定向?yàn)閔ttps配置詳解

    這篇文章主要介紹了Nginx下Frp強(qiáng)制重定向?yàn)閔ttps配置詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-04-04
  • 關(guān)于nginx?反向代理?URL替換方案

    關(guān)于nginx?反向代理?URL替換方案

    這篇文章主要介紹了nginx?反向代理?URL替換方案,本文給大家代理兩種方法一種是直接替換location匹配部分,第二種是使用nginx?的rewrite?模塊,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • Nginx之為已安裝nginx動(dòng)態(tài)添加模塊的方法

    Nginx之為已安裝nginx動(dòng)態(tài)添加模塊的方法

    本篇文章主要介紹了Nginx之為已安裝nginx動(dòng)態(tài)添加模塊的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • nginx網(wǎng)站服務(wù)如何配置防盜鏈(推薦)

    nginx網(wǎng)站服務(wù)如何配置防盜鏈(推薦)

    這篇文章主要介紹了nginx網(wǎng)站服務(wù)如何配置防盜鏈,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Nginx限流和黑名單配置的策略

    Nginx限流和黑名單配置的策略

    這篇文章主要介紹了Nginx限流和黑名單配置,Nginx的限流主要是兩種方式,限制訪問(wèn)頻率和限制并發(fā)連接數(shù),Nginx?按請(qǐng)求速率限速模塊使用的是漏桶算法,即能夠強(qiáng)行保證請(qǐng)求的實(shí)時(shí)處理速度不會(huì)超過(guò)設(shè)置的閾值,感興趣的朋友跟隨小編一起看看吧
    2022-05-05
  • 制作nginx的RPM包教程

    制作nginx的RPM包教程

    這篇文章主要介紹了制作nginx的RPM包的方法,需要的朋友可以參考下
    2014-07-07
  • nginx實(shí)現(xiàn)ip限流的具體示例

    nginx實(shí)現(xiàn)ip限流的具體示例

    限流的方式油很多種,本文主要介紹了nginx實(shí)現(xiàn)ip限流的具體示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • Nginx代理Partainer的具體使用

    Nginx代理Partainer的具體使用

    本文主要介紹了Nginx代理Partainer的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 深入探究Nginx體系化之虛擬主機(jī)分類(lèi)及配置實(shí)現(xiàn)

    深入探究Nginx體系化之虛擬主機(jī)分類(lèi)及配置實(shí)現(xiàn)

    Nginx,這款備受推崇的高性能 Web 服務(wù)器,以其強(qiáng)大的性能和靈活的配置而廣受歡迎,在實(shí)際應(yīng)用中,虛擬主機(jī)是一項(xiàng)重要的功能,允許我們?cè)趩蝹€(gè)服務(wù)器上托管多個(gè)網(wǎng)站,本文將深入探討 Nginx 虛擬主機(jī)的分類(lèi)和配置實(shí)現(xiàn),幫助您構(gòu)建一個(gè)高效多站點(diǎn)托管平臺(tái)
    2023-08-08
  • Nginx實(shí)現(xiàn)前端灰度發(fā)布

    Nginx實(shí)現(xiàn)前端灰度發(fā)布

    灰度發(fā)布是一種重要的策略,它允許我們?cè)诓挥绊懰杏脩舻那闆r下,逐步推出新功能或更新,通過(guò)灰度發(fā)布,我們可以測(cè)試新版本的穩(wěn)定性和性能,下面就來(lái)介紹一下前端灰度發(fā)布的使用,感興趣的可以了解一下
    2025-03-03

最新評(píng)論