zoukankan      html  css  js  c++  java
  • 从零到一快速搭建个人博客网站(域名自动跳转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 ^(.*)$  https://$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;
        
        # 负载均衡时使用 此处暂时关闭 详情见 https://imququ.com/post/optimize-tls-handshake.html 
        # 1.5.9 及以上支持
        ssl_session_tickets off;
        
        # 浏览器可能会在建立 TLS 连接时在线验证证书有效性,从而阻塞 TLS 握手,拖慢整体速度。OCSP stapling 是一种优化措施,服务端通过它可以在证书链中封装证书颁发机构的 OCSP(Online Certificate Status Protocol)响应,从而让浏览器跳过在线查询。服务端获取 OCSP 一方面更快(因为服务端一般有更好的网络环境),另一方面可以更好地缓存 以上内容来自 https://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 再发送请求 相关配置见 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 http://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;
        # 域名为 http://yangwq.cn 跳转到 https://www.yangwq.cn
        if ($http_host ~ "^yangwq.cn$") {
           rewrite ^(.*)$  https://www.$host$1 permanent;
        }
        # 域名不为 http://yangwq.cn,统一使用以https访问,不加www
        if ($http_host !~ "^yangwq.cn$") {
          rewrite ^(.*)$  https://$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;
        
        # 负载均衡时使用 此处暂时关闭 详情见 https://imququ.com/post/optimize-tls-handshake.html 
        # 1.5.9 及以上支持
        ssl_session_tickets off;
        
        # 浏览器可能会在建立 TLS 连接时在线验证证书有效性,从而阻塞 TLS 握手,拖慢整体速度。OCSP stapling 是一种优化措施,服务端通过它可以在证书链中封装证书颁发机构的 OCSP(Online Certificate Status Protocol)响应,从而让浏览器跳过在线查询。服务端获取 OCSP 一方面更快(因为服务端一般有更好的网络环境),另一方面可以更好地缓存 以上内容来自 https://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 再发送请求 相关配置见 https://imququ.com/post/sth-about-switch-to-https.html
        add_header Strict-Transport-Security max-age=60;
       
        # 如果直接使用https://yangwq.cn访问,需要跳转到带www域名
        if ($host ~ "^yangwq.cn$") {
            rewrite ^(.*)$  https://www.$host$1 permanent;
        }
        # 在此填写原本 http 协议中的配置
        location / {                           # 定义首页索引目录和名称
            proxy_pass http://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会自动跳转到 https://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 http://ip:端口;
    }
    

    后续文章在个人博客更新,欢迎关注~

  • 相关阅读:
    js数组条件筛选——map()
    (转)适用微信小程序的table表格(带隔行变色)
    nodejs学习笔记<七> 路由
    酷我音乐(在线试听)下载方法
    nodejs学习笔记<二> 使用node创建基础服务器
    JS BOM 窗口中的使用
    JS DOM
    JS 寄生 继承
    JS字面量创建方式的优缺点
    JS 构造函数
  • 原文地址:https://www.cnblogs.com/winkin/p/14165623.html
Copyright © 2011-2022 走看看