2016-12-02 149 views
1

我有一个nginx的设置是这样的:不需要nginx的重定向到https

/etc/nginx/sites-available/default-ssl.conf:

server { 

    listen 443 ssl; 

    server_name my.server.name; 

    ssl_certificate /etc/letsencrypt/live/my.server.name/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/my.server.name/privkey.pem; 

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_prefer_server_ciphers on; 
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; 

# root /usr/share/nginx/html; 
    root /var/www/html; 
    index index.html index.htm; 

    location/{ 
    try_files $uri $uri/ =404; 
    } 

    location /proxiedhost/ { 
    rewrite ^/proxiedhost(/.*)$ $1 break; 
    proxy_pass http://127.0.0.1:6080/; 
    proxy_set_header Host $host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header X-Forwarded-Proto https; 
    proxy_redirect off; 
    } 
    <<<< A couple more of these blocks >>>> 
} 
    server { 
    listen 80; 
    server_name origin.ticktockhouse.co.uk; 
    return 301 https://$host$request_uri; 
} 

的/ etc/nginx的/站点可用/aptrepo.conf:

server { 
     listen 80; ## listen for ipv4; this line is default and implied 

     root /home/aptrepo/; 
     index index.html index.htm; 

     server_name aptrepo.server.name; 
} 

我的问题是,当我浏览到http://aptrepo.server.name,它会自动重定向到https://aptrepo.server.name,我没有一个letsencrypt证书。当然,我可以得到一个,但我并不特别需要它,并想深入了解为什么会发生这种情况。

我愿意相信这是default-ssl.conf中的服务器块,但我很困惑为什么其他服务器块不是完全独立的。我已经四处寻找解释,但不幸的是大多数文章/问题都围绕着如何让https重定向到http--显然是我已经解决的一个问题!

+0

的问题,我没有看到在你的配置为aptrepo.server.name HTTPS服务器部分。这是否是所有服务器的完整配置?你使用HSTS吗? – raciasolvo

+0

我想aptrepo.server.name只能是HTTP,如果可能的话 – ticktockhouse

+0

当然这是可能的。你使用HSTS吗?显示'curl -I http:// aptrepo.server.name'的结果。你在哪里包含'/ etc/nginx/sites-available/aptrepo.conf'? – raciasolvo

回答

0

可能是nginx没有选择正确的server {}块的情况。

仅用于测试目的,尝试注释掉return 301 https://$host$request_uri;,看看是否能解决上aptrepo.server.name

+0

谢谢,我试过了,它确实有效。我还添加了返回301行,并且它看起来像我最初想要的那样工作。我不想将它作为http的原因是为了迎合没有安装apt-transport-https的Debian机器。 – ticktockhouse