V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Daddy
V2EX  ›  问与答

如何强制全站 https 访问?

  •  
  •   Daddy · 2015-09-14 19:23:39 +08:00 · 3559 次点击
    这是一个创建于 3362 天前的主题,其中的信息可能已经有所发展或是发生改变。

    用的网上配方,没效果,仍然不是全站 https

    server {
    listen 80;
    server_name xxx.com www.xxx.com;
    #rewrite ^ https://$server_name$request_uri? permanent;
    return 301 https://$server_name$request_uri;
    }
    server {
    listen 443;
    server_name xxxx.com www.xxx.com;
    index index.html index.htm index.php;
    root /home/wwwroot/xxx.com;
    ssl on;
    ssl_certificate /usr/local/nginx/conf/ssl/xxx.crt;
    ssl_certificate_key /usr/local/nginx/conf/ssl/xxx.key;
    ssl_protocols SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";
    ssl_prefer_server_ciphers on;
    add_header Strict-Transport-Security max-age=63072000;
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;
    }

    19 条回复    2015-09-14 21:50:22 +08:00
    zhjits
        1
    zhjits  
       2015-09-14 20:17:05 +08:00
    listen 443 ssl;
    zhjits
        2
    zhjits  
       2015-09-14 20:18:10 +08:00   ❤️ 1
    另: add_header X-Frame-Options DENY; 过于严格,可能和部分应用不兼容,建议改为 add_header X-Frame-Options SAMEORIGIN;
    virusdefender
        3
    virusdefender  
       2015-09-14 20:35:45 +08:00
    没效果是怎么个表现?
    Daddy
        4
    Daddy  
    OP
       2015-09-14 20:42:43 +08:00
    @zhjits 不行呀, IE/firefox 都不行, chrome /opera 可以
    Daddy
        5
    Daddy  
    OP
       2015-09-14 20:43:38 +08:00
    @virusdefender 直接输入域名,访问的还是 http ,没自动切换到 https
    kozora
        6
    kozora  
       2015-09-14 20:44:30 +08:00
    证书链对没?
    Daddy
        7
    Daddy  
    OP
       2015-09-14 20:49:05 +08:00
    @kozora 可以 https 访问,只是没法强制完全 https
    xfspace
        8
    xfspace  
       2015-09-14 20:50:04 +08:00   ❤️ 1
    - -你 reload 没有
    Daddy
        9
    Daddy  
    OP
       2015-09-14 20:51:05 +08:00
    @xfspace 当然每次修改都重启 nginx 了
    yinheli
        10
    yinheli  
       2015-09-14 20:54:11 +08:00   ❤️ 1
    再增加一条

    proxy_set_header X-Forwarded-Proto "https";

    另外, 你的程序本身是否支持.
    xfspace
        11
    xfspace  
       2015-09-14 20:54:56 +08:00
    @Daddy ctrl+f5 看看,可能是浏览器缓存?
    yywudi
        12
    yywudi  
       2015-09-14 20:59:23 +08:00   ❤️ 1
    rewrite ^/(.*) https://<domain>/$1 permanent;
    Daddy
        13
    Daddy  
    OP
       2015-09-14 21:00:38 +08:00
    @yinheli 手动加 https 是没问题的,就是没有强制完全 http---->https

    @xfspace 不要说刷新了,都清空缓存的,本机 多个浏览器,加虚拟机跑的 Midori 浏览器。 chrome 可以我都怀疑是 chrome 的记忆, chrome 你访问同一站点多次 https ,以后你仍然是自动给你补上 s 来访问
    cosmosz
        14
    cosmosz  
       2015-09-14 21:03:23 +08:00
    rewrite 那条别 comment out 了
    Daddy
        15
    Daddy  
    OP
       2015-09-14 21:06:19 +08:00
    @yywudi 不行呢~
    Daddy
        16
    Daddy  
    OP
       2015-09-14 21:20:11 +08:00
    @zhjits @xfspace @yinheli @yywudi @cosmosz

    OMG , 23333 了,我忘了域名已被认证,也就没法 80 跳转 443 了,实质上本来就已经可以了,可恶的 chrome/opera 又可以直接跳, firefox 就怎么也不行,也就没想到这一层去。谢谢大家
    yywudi
        17
    yywudi  
       2015-09-14 21:23:10 +08:00
    @Daddy 你需要域名转发功能 :)
    Daddy
        18
    Daddy  
    OP
       2015-09-14 21:30:25 +08:00
    @yywudi 嗯,直接域名解析 301 跳转,不 nginx 跳转。 chrome 这点不好,只要你多次访问同一站点的 https ,以后再也不能访问回 http , chrome 会自动补全。
    Slienc7
        19
    Slienc7  
       2015-09-14 21:50:22 +08:00
    HSTS 并附加 preload
    Chrome/Firefox 浏览器无需连接 80 端口,直接走 443
    IE 不考虑
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6031 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 02:38 · PVG 10:38 · LAX 18:38 · JFK 21:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.