最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nginx多https證書配置實現(xiàn)

 更新時間:2024年04月29日 10:50:13   作者:zzhongcy  
本文主要介紹了nginx多https證書配置實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

其實有很多方式,網(wǎng)上看到一個這個方法,給大家介紹一下。

首先,開啟支持-TLS SNI support

什么是SNI?

傳統(tǒng)的應(yīng)用場景中,一臺服務(wù)器對應(yīng)一個IP地址,一個域名,使用一張包含了域名信息的證書。隨著云計算技術(shù)的普及,在云中的虛擬機有了一個IP,對應(yīng)多個域名,使用多張證書的應(yīng)用場景,SNI技術(shù)應(yīng)運而生。SNI(Server Name Indication),即實現(xiàn)了一個服務(wù)器使用多個域名證書的TLS擴展,支持用戶配置多個域名證書。

SNI請求特點

HTTP請求的Host字段在請求的Header中。發(fā)起HTTPS請求時,在TLS握手階段,還無法進行HTTP數(shù)據(jù)的解析,此時TLS協(xié)議的Client Hello字段新增了一個Server Name字段,請求的客戶端可以通過這個字段填充請求的Host信息,而服務(wù)端在TLS握手階段就可以選擇請求處理的證書,實現(xiàn)SNI的功能。

支持-TLS SNI support

Nginx支持單IP多域名SSL證書需要OpenSSL支持,首先需要編譯安裝一個高版本的openssl。

Nginx支持SNI,允許在同一個TLS服務(wù)端口下,配置不同的域名,用戶通過請求不同的證書域名,可返回相應(yīng)的upstream響應(yīng)結(jié)果。

檢查nginx是否支持TLS SNI support:

/usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.10.2

TLS SNI support disabled

configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

TLS SNI support disabled 這樣是不支持的。

下面開始升級openssl:

wget ftp://ftp.openssl.org/source/openssl-1.0.2h.tar.gz
tar xzvf openssl-1.0.2h.tar.gz
cd openssl-1.0.2h
./config --prefix=/usr/local/openssl/ enable-shared enable-tlsext

make && make install

[root@localhost ~]# /usr/local/nginx/sbin/nginx -V  

nginx version: nginx/1.10.2  

built by gcc 4.1.2 20080704 (Red Hat 4.1.2-55)  

built with OpenSSL 1.0.2h  21 Dec 2016  

TLS SNI support enabled  

configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-openssl=/usr/local/openssl --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module  

方法1:多server配置不同證書和域名

server  {
        listen 443;
        server_name   *.www.aabb.com;
        index index.html index.htm index.php;
        root  /data/wwwroot/www.aabb.com/webroot;
        ssl on;
        ssl_certificate "/usr/local/nginx/conf/ssl/_.www.aabb.com.public.cer";
        ssl_certificate_key "/usr/local/nginx/conf/ssl/_.www.aabb.com.private.key";   
 ......
} 
 
server  {
        listen 443;
        server_name   www.aabb.com;
        index index.html index.htm index.php;
        root  /data/wwwroot/www.aabb.com/webroot;
        ssl on;
        ssl_certificate "/usr/local/nginx/conf/ssl/www.aabb.com.public.cer";
        ssl_certificate_key "/usr/local/nginx/conf/ssl/www.aabb.com.private.key";   
 ......
}

方法2:根據(jù)ssl_server_name判斷配置

ssl_server_name例子1:

對于nginx多https站點通常的做法是這樣:

server 443 ssl;
server_name nixops1.me;
ssl_certificate     /usr/local/nginx/keys/nixops1.me.crt;
ssl_certificate_key /usr/local/nginx/keys/nixops1.me.key;
......

如果有多個https站點,就是每個站點復制一份這個配置。如nixops2.me、nixops3.me等等,在只有幾十個https站點的時候還好,如果某個站點的域名特別多,例如有幾千個域名甚至上萬個域名的時候,這個配置就很恐怖了,需要精簡并合并配置。

下面舉例說明,假設(shè)應(yīng)用場景為:

  • 同一站點有大量域名需要配置https證書,其它配置一樣
  • 每個之證書都是泛域名證書,如let's encrypt的wildcard證書
  • 所有證書命名均為公鑰domain.com.crt、私鑰為domain.com.key 這樣的格式
  • 所有證書保存在相同目錄中,如/usr/local/nginx/conf/keys/

具體做法可以用nginx的map和正則表達式,根據(jù)ssl_server_name(即https的訪問域名),獲取公鑰和私鑰的完整路徑做為變量。配置證書時使用該變量即可。先來看nginx配置文件中HTTP段的map配置:

map $ssl_server_name $NixopsCert {
    default /usr/local/nginx/conf/keys/nixops.me.crt; #指定一個默認的證書
    ~*^(.+\.)*([^\.]+\.[^\.]+)$ /usr/local/nginx/conf/keys/$2.crt;
}

map $ssl_server_name $NixopsKey {
    default /usr/local/nginx/conf/keys/nixops.me.key;
    ~*^(.+\.)*([^\.]+\.[^\.]+)$ /usr/local/nginx/conf/keys/$2.key;
}

這樣配置好后,如果通過https訪問nixops1.me或*.nixops1.me,獲取到的路徑分別為:

$NixopsCert  --> /usr/local/nginx/conf/keys/nixops1.me.crt;
$NixopsKey   --> /usr/local/nginx/conf/keys/nixops1.me.key;

然后配置server段證書公鑰和私鑰時就不需要按傳統(tǒng)作法復制配置,只需指定變量即可:

server {
    listen  80;
    listen  443 ssl http2;
    server_name
        nixops.me
        nixops1.me
        nixops2.me
        #......
    ;

    ssl_certificate     $NixopsCert;
    ssl_certificate_key $NixopsKey;

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
   #其它server段配置
}

這樣同一站點有多個證書時,就可以只在server_name里添加,不需要指定https配置了,和http站點添加域名綁定非常類似。

ssl_server_name例子2:

在1.7.0版本開始,Nginx支持通過$ssl_server_name 變量獲取TLS中的Server Name,我們可以據(jù)此結(jié)合map映射指令,提升配置的重用度,一種優(yōu)化后的配置方式如下:

# Settings for a TLS enabled server.
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout  10m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    map $ssl_server_name $ssl_string {
        lwl.test.com lwl.test.com;
        lwl.test1.com lwl.test1.com;
        default lwl.default.com;
    }

    upstream lwl.test.com {
        server 192.168.58.196;
    }

    upstream lwl.test1.com {
        server 192.168.58.194:8081;
    }

    upstream lwl.default.com {
        server 192.168.58.195;
    }

  server {
        listen       443 ssl;
        listen       [::]:443 ssl;
        server_name  $ssl_string;
        root         /usr/share/nginx/html;

        ssl_certificate /etc/nginx/ssl_sni/server/$ssl_string/server.crt;
        ssl_certificate_key /etc/nginx/ssl_sni/server/$ssl_string/server.key;

        include /etc/nginx/default.d/*.conf;

        location / {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Cookie $http_cookie;
            proxy_pass http://$ssl_string;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

本文通過結(jié)合Nginx的 $ssl_server_name 變量與map指令,提供了一種支持多個SNI證書配置的實現(xiàn)方式,提高了配置維護的重用度。

方法3:一個server設(shè)置多個域名和ssl證書(沒嘗試,有待驗證)

多域名多證書可以使用多個server 多個子配置文件進行設(shè)置并且方便管理

還有一種就是一個server設(shè)置多個域名和ssl證書

看圖 因為80端口不涉及證書 所以這里以443端口為例

server_name 中第二個域名與第一個域名之間以空格隔開,

再復制一份  ssl_certificate ;   和  ssl_certificate_key  ;輸入第二個域名的證書文件地址即可

參考:

nginx多https證書配置精簡 - 閱心筆記

nginx一個server配置多域名多ssl證書_nginx多證書-CSDN博客

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

相關(guān)文章

  • nginx location語法使用介紹

    nginx location語法使用介紹

    Nginx 中的 Location 指令 是NginxHttpCoreModule中重要指令。Location 指令,是用來為匹配的 URI 進行配置,URI 即語法中的”/uri/”,可以是字符串或正則表達式。但如果要使用正則表達式,則必須指定前綴
    2015-01-01
  • 利用SSL配置Nginx反向代理的簡單步驟

    利用SSL配置Nginx反向代理的簡單步驟

    這篇文章主要給大家介紹了關(guān)于利用SSL配置Nginx反向代理的簡單步驟,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Nginx具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-05-05
  • 在Nginx中隱藏版本號的方法詳解

    在Nginx中隱藏版本號的方法詳解

    Nginx是一款高性能的Web服務(wù)器軟件,它支持反向代理、負載均衡、緩存等功能,在使用 Nginx 的過程中,有時候我們需要隱藏 Nginx 的版本號,以增強服務(wù)器的安全性,所以接下來小編將給大家介紹如何在Nginx中隱藏版本號,需要的朋友可以參考下
    2023-11-11
  • Nginx四層負載均衡的配置指南

    Nginx四層負載均衡的配置指南

    當一臺服務(wù)器的單位時間內(nèi)的訪問量越大時,服務(wù)器壓力就越大,大到超過自身承受能力時,服務(wù)器就會崩潰.為了避免服務(wù)器崩潰,讓用戶有更好的體驗,我們通過負載均衡的方式來分擔服務(wù)器壓力,這篇文章主要給大家介紹了關(guān)于Nginx四層負載均衡配置的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • centos系統(tǒng)下LNMP環(huán)境一鍵安裝

    centos系統(tǒng)下LNMP環(huán)境一鍵安裝

    centos下的LNMP環(huán)境一鍵安裝實現(xiàn)方法,需要的朋友可以參考下。
    2010-06-06
  • Nginx報錯host not found in upstream的解決辦法

    Nginx報錯host not found in upstream的解決辦法

    本文主要介紹了Nginx報錯host not found in upstream的解決辦法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-08-08
  • 由于Nginx配置文件問題導致打不開網(wǎng)站unknown directive的解決

    由于Nginx配置文件問題導致打不開網(wǎng)站unknown directive的解決

    這篇文章主要介紹了由于Nginx配置文件問題導致打不開網(wǎng)站unknown directive,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • nginx之從main函數(shù)開始了解配置文件處理及配置信息的讀入過程

    nginx之從main函數(shù)開始了解配置文件處理及配置信息的讀入過程

    這篇文章主要介紹了nginx之從main函數(shù)開始了解配置文件處理及配置信息的讀入過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-07-07
  • Nginx基于gzip壓縮提高訪問速度

    Nginx基于gzip壓縮提高訪問速度

    這篇文章主要介紹了Nginx基于gzip壓縮提高訪問速度,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • nginx如何限制訪問某些url

    nginx如何限制訪問某些url

    這篇文章主要關(guān)于介紹了nginx如何限制訪問某些url的相關(guān)資料,nginx是非常出色web服務(wù)器,對于靜態(tài)文件的處理非常高效,同時它的代理轉(zhuǎn)發(fā)功能和其它后臺服務(wù)器搭配起來也非常的簡單高效,需要的朋友可以參考下
    2023-08-08

最新評論

潞西市| 巴林左旗| 托克逊县| 沙洋县| 龙江县| 渝中区| 咸宁市| 山阴县| 南平市| 民乐县| 白银市| 沛县| 菏泽市| 页游| 砀山县| 丹寨县| 白城市| 高邮市| 贵港市| 左贡县| 安远县| 阿合奇县| 沭阳县| 哈尔滨市| 四会市| 怀宁县| 砀山县| 浦县| 沂南县| 浦城县| 肥东县| 唐海县| 襄垣县| 措勤县| 观塘区| 雷波县| 明水县| 长阳| 城固县| 明光市| 东乡|