V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
Hopetree
V2EX  ›  NGINX

接昨天的主题, nginx 配置 ssl 没有起作用

  •  
  •   Hopetree ·
    Hopetree · 2019-01-28 19:08:52 +08:00 · 3323 次点击
    这是一个创建于 2112 天前的主题,其中的信息可能已经有所发展或是发生改变。

    昨天以为是防火墙的问题所以没有发 nginx 配置,现在发一下,首先发我 80 的配置,80 是没问题的,然后发 443 的配置,证书是阿里云申请的,下载的是 nginx 使用的,证书的位置也没错,求帮忙看看配置哪里有问题。

    server {
        # 端口和域名
        listen 80;
        server_name tendcode.com;
    
        # 不记录访问不到 favicon.ico 的报错日志
        location = /favicon.ico {
            access_log off;
            log_not_found off;
        }
    
        # static 和 media 的地址
        location /static/ {
            root /opt/izone;
        }
        location /media/ {
            root /opt/izone;
        }
    
        # web 服务使用 80 端口,并且添加别名跟本地域名保持一致
        location / {
            proxy_pass http://tendcode.com;
        }
    
        # 其他配置
        client_max_body_size 1m;
        client_header_buffer_size 128k;
        client_body_buffer_size 1m;
        proxy_buffer_size 32k;
        proxy_buffers 64 32k;
        proxy_busy_buffers_size 1m;
        proxy_temp_file_write_size 512k;
    }
    
    server {
        listen 80;
        server_name www.tendcode.com;
        rewrite ^(.*) http://tendcode.com$1 permanent;
    }
    
    server {
        # 端口和域名
        listen 443 ssl;
        server_name tendcode.com;
    
        ssl_certificate /etc/nginx/conf.d/tendcode.com.crt;
        ssl_certificate_key /etc/nginx/conf.d/tendcode.com.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
    
        # 不记录访问不到 favicon.ico 的报错日志
        location = /favicon.ico {
            access_log off;
            log_not_found off;
        }
    
        # static 和 media 的地址
        location /static/ {
            root /opt/izone;
        }
        location /media/ {
            root /opt/izone;
        }
    
        # web 服务使用 80 端口,并且添加别名跟本地域名保持一致
        location / {
            proxy_pass http://tendcode.com;
        }
    
        # 其他配置
        client_max_body_size 1m;
        client_header_buffer_size 128k;
        client_body_buffer_size 1m;
        proxy_buffer_size 32k;
        proxy_buffers 64 32k;
        proxy_busy_buffers_size 1m;
        proxy_temp_file_write_size 512k;
    }
    
    server {
        listen 80;
        server_name tendcode.com;
        rewrite ^(.*) https://tendcode.com$1 permanent;
    }
    

    然后我查看 nginx 日志,没有错误日志,access 日志有,大概是如下:

    58.62.53.255 - - [28/Jan/2019:11:01:17 +0000] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.1.1 Safari/538.1" "-"
    220.152.220.42 - - [28/Jan/2019:11:01:31 +0000] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763" "-"
    8.29.198.26 - - [28/Jan/2019:11:02:10 +0000] "GET /feed/ HTTP/1.1" 301 169 "-" "Feedly/1.0 (+http://www.feedly.com/fetcher.html; 3 subscribers; like FeedFetcher-Google)" "-"
    

    现在的情况就是,https://tendcode.com/ 无法访问,网站 GG 了,在线等大佬帮忙,先谢谢了

    tan90
        1
    tan90  
       2019-01-28 19:12:52 +08:00
    443 端口不通!
    Hopetree
        2
    Hopetree  
    OP
       2019-01-28 19:15:06 +08:00
    @tan90 不通是什么意思啊,我服务器的安全组已经添加 443 了,昨天回复的也说不是防火墙问题啊,这是昨天的帖子 https://www.v2ex.com/t/531069#reply26
    harde
        3
    harde  
       2019-01-28 19:15:19 +08:00
    nginx -t 看看有没有问题。
    然后确定 nginx 是“重启”了。
    Hopetree
        4
    Hopetree  
    OP
       2019-01-28 19:18:01 +08:00
    @harde nginx -t 没问题,我是容器化部署,我改完配置重启了容器,所以 nginx 肯定也重启了
    masker
        5
    masker  
       2019-01-28 19:19:52 +08:00 via Android
    telnet 失败。
    wuqingdzx
        6
    wuqingdzx  
       2019-01-28 19:26:12 +08:00 via Android
    为什么要 proxy_pass 跟你的 server name 一样?
    wuqingdzx
        7
    wuqingdzx  
       2019-01-28 19:26:50 +08:00 via Android
    你有别的 web 服务还能继续用 80 端口?
    2exploring
        8
    2exploring  
       2019-01-28 19:26:54 +08:00
    容器化部署,那你对容器做了 443 的端口映射了没?
    giuem
        9
    giuem  
       2019-01-28 19:28:08 +08:00
    你容器做端口映射了吗
    harde
        10
    harde  
       2019-01-28 19:35:50 +08:00
    @Hopetree 同 8、9 楼,同问。
    1v9
        11
    1v9  
       2019-01-28 19:37:05 +08:00
    你这配置太秀了,请参考 6789 楼回复。
    Hopetree
        12
    Hopetree  
    OP
       2019-01-28 19:40:00 +08:00
    @2exploring @giuem 感谢提醒,已经好了,原来是我容器没有做 443 映射,V2 的大佬真的高效

    再次感谢昨天和今天给我回复的人,非常感谢,搞定了
    Tounea
        13
    Tounea  
       2019-01-28 19:40:24 +08:00 via Android
    写这么多 server 监控 80 有些多余,想要的结果无非不带 www 前缀,这样直接在 server name xxx.com 就可以了。言归正传,你的 proxy_pass http://tendcode.com;忘记加端口了。
    wuqingdzx
        14
    wuqingdzx  
       2019-01-28 19:42:30 +08:00 via Android
    我真是特别好奇,你为什么 80 跳 443,然后继续代理到 80 ?还是说你配置了 upstream ?
    Hopetree
        15
    Hopetree  
    OP
       2019-01-28 19:44:56 +08:00
    @Tounea 不用加端口,因为我 web 服务用的 80 端口,其实这个地方很无奈,因为我用到了 django 的一个方法,就是 {{ request.build_absolute_uri }}因为我用的容器,所以这个获取的是容器的服务地址,比如我容器如果写的 web 的话,那就得到了 web.com ,所以我给容器做了个映射,跟本机的域名一样
    Hopetree
        16
    Hopetree  
    OP
       2019-01-28 19:46:58 +08:00
    看我上一条回复,结合我的 docker-compose 看,我服务的容器也做了个域名映射 https://github.com/Hopetree/izone-docker/blob/master/docker-compose.yml
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2615 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 05:14 · PVG 13:14 · LAX 21:14 · JFK 00:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.