本篇文章為大家展示了如何在Nginx中配置多個HTTPS域名,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
專注于為中小企業(yè)提供網(wǎng)站設(shè)計制作、做網(wǎng)站服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)巫溪免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了成百上千企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
環(huán)境:
CentOS 7
多個一級域名
開發(fā)測試過程中,因為某些原因,想要讓手頭的A、B域名同時指向云服務(wù)器的443端口,支持HTTPS。
Nginx支持TLS協(xié)議的SNI擴展(同一個IP上可以支持多個不同證書的域名),只需要重新安裝Nginx,使其支持TLS即可。
安裝Nginx
[root]# wget http://nginx.org/download/nginx-1.12.0.tar.gz [root]# tar zxvf nginx-1.12.0.tar.gz [root]# cd nginx-1.12.0 [root]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module \ --with-openssl=./openssl-1.0.1e \ --with-openssl-opt="enable-tlsext"
備注:在安裝的過程中發(fā)現(xiàn),云服務(wù)器的環(huán)境中缺少一些庫,下載后,重新執(zhí)行Nginx的./configure
指令,具體操作如下:
[root]# wget https://nchc.dl.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz [root]# tar zxvf pcre-8.35 [root]# yum -y install gcc [root]# yum -y install gcc-c++ [root]# yum install -y zlib-devel [root]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module \ --with-openssl=./openssl-1.0.1e \ --with-openssl-opt="enable-tlsext" \ --with-pcre=./pcre-8.35
配置Nginx
在購買域名的時候,如果域名提供商有免費的SSL證書,就直接用;如果沒有的話,可以使用 Let's Encript 生成免費的CA證書。
打開Nginx的配置:vi /etc/nginx/nginx.conf
... server { listen 443 ssl; listen [::]:443 ssl; server_name abc.com; root /usr/share/nginx/html; ssl_certificate "/root/keys/abc.com.pem"; ssl_certificate_key "/root/keys/abc.com.private.pem"; include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } server { listen 443 ssl; listen [::]:443 ssl; server_name def.com; root /usr/share/nginx/html; ssl_certificate "/root/keys/def.com.pem"; ssl_certificate_key "/root/keys/def.com.private.pem"; include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
配置完成后,重新加載Ngixn:nginx -s reload
申請免費的CA證書
對于沒有SSL證書的情況,可以用下面的方法免費獲得CA證書——Let's Encript。
步驟1:安裝 Let's Encrypt 官方客戶端——CetBot
[root]# yum install -y epel-releasesudo [root]# yum install -y certbot
步驟2:配置Nginx的配置文件,在 Server 模塊(監(jiān)聽80端口的)添加下面配置:
CertBot在驗證服務(wù)器域名的時候,會生成一個隨機文件,然后CertBot的服務(wù)器會通過HTTP訪問你的這個文件,因此要確保你的Nginx配置好,以便可以訪問到這個文件。
server { listen 80 default_server; ... location ^~ /.well-known/acme-challenge/ { default_type "text/plain"; root /usr/share/nginx/html; } location = /.well-known/acme-challenge/ { return 404; } }
重新加載Nginx: nginx -s reload
步驟3:申請SSL證書
[root]# certbot certonly --webroot -w /usr/share/nginx/html/ -d your.domain.com
安裝過程中,會提示輸入郵箱,用于更新CA證書的。
安裝成功后,默認會在 /etc/letsencrypt/live/your.domain.com/
會生成CA證書。
|-- fullchain.pem |-- privkey.pem
步驟4:配置Nginx
server { listen 443 ssl; listen [::]:443 ssl; server_name def.com; root /usr/share/nginx/html; ssl_certificate "/etc/letsencrypt/live/your.domain.com/fullchain.pem"; ssl_certificate_key "/etc/letsencrypt/live/your.domain.com/privkey.pem"; include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
配置完,重新加載Nginx
步驟5:自動更新證書
在命令行先進行模擬更新證書
certbot renew --dry-run
如果模擬更新成功,則 使用 crontab -e 命令來啟用自動更新任務(wù):
[root]# crontab -e 30 2 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log
上述內(nèi)容就是如何在Nginx中配置多個HTTPS域名,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。