從零到一快速搭建個人博客網站(域名自動跳轉www,二級域名使用)(二)
前言
本篇文章是對上篇文章從零到一快速搭建個人博客網站(域名備案 + https免費證書)(一)的完善,比如域名自動跳轉www、二級域名使用等。
域名自動跳轉www
這裡對上篇域名訪問進行優化,首先支持域名自動跳轉帶有www的地址,操作如下:
cd /home/nginx/conf.d
vi default.conf
當前的配置:
# 編輯conf.d 下的default.conf
server {
listen 80 default;
server_name yangwq.cn;
# http自動轉https
rewrite ^(.*)$ //$host$1 permanent;
}
server {
listen 443 ssl;
server_name yangwq.cn;
# 配置站點證書文件地址
ssl_certificate /etc/letsencrypt/archive/yangwq.cn/fullchain1.pem;
# 配置證書私鑰
ssl_certificate_key /etc/letsencrypt/archive/yangwq.cn/privkey1.pem;
# 配置服務器可使用的加密算法
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
# 指定服務器密碼算法在優先於客戶端密碼算法時,使用 SSLv3 和 TLS 協議
ssl_prefer_server_ciphers on;
# ssl 版本 可用 SSLv2,SSLv3,TLSv1,TLSv1.1,TLSv1.2
# ie6 只支持 SSLv2,SSLv3 但是存在安全問題, 故不支持
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# 配置 TLS 握手後生成的 session 緩存空間大小 1m 大約能存儲 4000 個 session
ssl_session_cache shared:SSL:50m;
# session 超時時間
ssl_session_timeout 1d;
# 負載均衡時使用 此處暫時關閉 詳情見 //imququ.com/post/optimize-tls-handshake.html
# 1.5.9 及以上支持
ssl_session_tickets off;
# 瀏覽器可能會在建立 TLS 連接時在線驗證證書有效性,從而阻塞 TLS 握手,拖慢整體速度。OCSP stapling 是一種優化措施,服務端通過它可以在證書鏈中封裝證書頒發機構的 OCSP(Online Certificate Status Protocol)響應,從而讓瀏覽器跳過在線查詢。服務端獲取 OCSP 一方面更快(因為服務端一般有更好的網絡環境),另一方面可以更好地緩存 以上內容來自 //imququ.com/post/my-nginx-conf-for-wpo.html
# 1.3.7 及以上支持
ssl_stapling on;
ssl_stapling_verify on;
# 根證書 + 中間證書
ssl_trusted_certificate /etc/letsencrypt/archive/yangwq.cn/fullchain1.pem;
# HSTS 可以告訴瀏覽器,在指定的 max-age 內,始終通過 HTTPS 訪問該域名。即使用戶自己輸入 HTTP 的地址,或者點擊了 HTTP 鏈接,瀏覽器也會在本地替換為 HTTPS 再發送請求 相關配置見 //imququ.com/post/sth-about-switch-to-https.html
add_header Strict-Transport-Security max-age=60;
# 在此填寫原本 http 協議中的配置
location / {
# 配置轉發到本機的halo端口,注意這裡的ip應該是機器的ip,不能使用127.0.0.1,使用ip addr 查看本機ip
proxy_pass //171.11.3.13:8080;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html { #重定向錯誤頁面到 /50x.html
root /usr/share/nginx/html;
}
}
修改為:
server {
listen 80;
server_name *.yangwq.cn;
# 域名為 //yangwq.cn 跳轉到 //www.yangwq.cn
if ($http_host ~ "^yangwq.cn$") {
rewrite ^(.*)$ //www.$host$1 permanent;
}
# 域名不為 //yangwq.cn,統一使用以https訪問,不加www
if ($http_host !~ "^yangwq.cn$") {
rewrite ^(.*)$ //$host$1 permanent;
}
}
server {
listen 443 ssl;
server_name yangwq.cn;
# 配置站點證書文件地址
ssl_certificate /etc/letsencrypt/archive/yangwq.cn/fullchain1.pem;
# 配置證書私鑰
ssl_certificate_key /etc/letsencrypt/archive/yangwq.cn/privkey1.pem;
# 配置服務器可使用的加密算法
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
# 指定服務器密碼算法在優先於客戶端密碼算法時,使用 SSLv3 和 TLS 協議
ssl_prefer_server_ciphers on;
# ssl 版本 可用 SSLv2,SSLv3,TLSv1,TLSv1.1,TLSv1.2
# ie6 只支持 SSLv2,SSLv3 但是存在安全問題, 故不支持
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# 配置 TLS 握手後生成的 session 緩存空間大小 1m 大約能存儲 4000 個 session
ssl_session_cache shared:SSL:50m;
# session 超時時間
ssl_session_timeout 1d;
# 負載均衡時使用 此處暫時關閉 詳情見 //imququ.com/post/optimize-tls-handshake.html
# 1.5.9 及以上支持
ssl_session_tickets off;
# 瀏覽器可能會在建立 TLS 連接時在線驗證證書有效性,從而阻塞 TLS 握手,拖慢整體速度。OCSP stapling 是一種優化措施,服務端通過它可以在證書鏈中封裝證書頒發機構的 OCSP(Online Certificate Status Protocol)響應,從而讓瀏覽器跳過在線查詢。服務端獲取 OCSP 一方面更快(因為服務端一般有更好的網絡環境),另一方面可以更好地緩存 以上內容來自 //imququ.com/post/my-nginx-conf-for-wpo.html
# 1.3.7 及以上支持
ssl_stapling on;
ssl_stapling_verify on;
# 根證書 + 中間證書
ssl_trusted_certificate /etc/letsencrypt/archive/yangwq.cn/fullchain1.pem;
# HSTS 可以告訴瀏覽器,在指定的 max-age 內,始終通過 HTTPS 訪問該域名。即使用戶自己輸入 HTTP 的地址,或者點擊了 HTTP 鏈接,瀏覽器也會在本地替換為 HTTPS 再發送請求 相關配置見 //imququ.com/post/sth-about-switch-to-https.html
add_header Strict-Transport-Security max-age=60;
# 如果直接使用//yangwq.cn訪問,需要跳轉到帶www域名
if ($host ~ "^yangwq.cn$") {
rewrite ^(.*)$ //www.$host$1 permanent;
}
# 在此填寫原本 http 協議中的配置
location / { # 定義首頁索引目錄和名稱
proxy_pass //171.11.3.13:8080;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html { #重定向錯誤頁面到 /50x.html
root /usr/share/nginx/html;
}
}
將上面有關 yangwq.cn 的部分替換成你的域名,此時我們訪問yangwq.cn會自動跳轉到 //www.yangwq.cn。
二級域名https
申請二級域名
由於博主是阿里雲購買的域名,所以這裡申請域名僅針對在阿里雲購買的域名。
從域名解析列表加入需要使用的二級域名:
上面我們添加了一個temp.yangwq.cn的二級域名,指向域名 yangwq.cn 的地址,這時候通過temp.yangwq.cn 訪問是失敗的,原因是需要等待網絡服務商刷新DNS地址,一般需要等等1-2分鐘。
此時我們訪問訪問temp.yangwq.cn會默認跳轉到 www.yangwq.cn 首頁。為了方便測試,我們需要針對temp.yangwq.cn 配置訪問nginx默認頁面。
修改配置如下:
vi default.conf
# 在末尾追加以下腳本
server {
listen 443 ssl;
server_name temp.yangwq.cn;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html { #重定向錯誤頁面到 /50x.html
root /usr/share/nginx/html;
}
}
由於我們上篇文章申請的是通配符https證書,所以直接可以使用https訪問 temp.yangwq.cn,我們會看到這個頁面:
小結
到這一步,我們二級域名就配置完了,如果我們需要二級域名跳轉到內部應用,我們只要修改以下內容就行了
# 改為你想代理的應用
location / {
# 注意這裡要使用機器的ip,不能用127.0.0.1,機器ip使用命令 ip addr 查看
proxy_pass //ip:端口;
}
後續文章在個人博客更新,歡迎關注~