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

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

  •  
  •   Hopetree · 318 天前 · 1220 次点击
    这是一个创建于 318 天前的主题,其中的信息可能已经有所发展或是发生改变。

    昨天以为是防火墙的问题所以没有发 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 了,在线等大佬帮忙,先谢谢了

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

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