從零到一快速搭建個人博客網站(域名自動跳轉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

申請二級域名

由於博主是阿里雲購買的域名,所以這裡申請域名僅針對在阿里雲購買的域名。

從域名解析列表加入需要使用的二級域名:
image.png

上面我們添加了一個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,我們會看到這個頁面:
image.png

小結

到這一步,我們二級域名就配置完了,如果我們需要二級域名跳轉到內部應用,我們只要修改以下內容就行了

# 改為你想代理的應用
location / {
     # 注意這裡要使用機器的ip,不能用127.0.0.1,機器ip使用命令 ip addr 查看
      proxy_pass //ip:端口;
}

後續文章在個人博客更新,歡迎關注~

Tags: