https设置后Nginx重定向到默认欢迎页面

Posted

技术标签:

【中文标题】https设置后Nginx重定向到默认欢迎页面【英文标题】:Nginx redirects to default welcome page after https setup 【发布时间】:2014-09-03 07:53:03 【问题描述】:

我已经在我的 nginx 实例上配置了 SPDY 并使用 http://spdycheck.org/ 来确认它的设置,但是由于某些奇怪的原因 Nginx 将 https 重定向到默认的 Nginx 页面,我已经从启用的站点中删除了默认符号链接,重新启动服务器,但问题仍然存在。我的站点 conf 文件有:

server 
       listen 443 spdy ssl;
       server_name foobar;
       ssl_certificate /etc/nginx/ssl/server.crt;
       ssl_certificate_key /etc/nginx/ssl/server.key;



server 
        listen 80;
        server_name foobar;
        return 301 https://sub.foobar.com$request_uri;
        #error_page  404         = @notfound;
        access_log /var/log/access.foobar.com.log;
        error_log /var/log/error.foobar.com.log;

        location / 
                proxy_pass http://127.0.0.1:9030;
                proxy_pass_header Server;
                proxy_set_header Host $http_host;
                proxy_redirect off;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Scheme $scheme;
                proxy_connect_timeout 60;
                proxy_read_timeout 120;


        

我需要进行哪些更改才能使其正常工作?

【问题讨论】:

这个问题似乎离题了,因为它与编程无关。请参阅帮助中心的What topics can I ask about here。也许Server Fault 或Webmaster Stack Exchange 会是一个更好的提问地点。 您是否尝试使用其他浏览器来检查问题是否仍然存在?有时浏览器会缓存一些重定向响应。 【参考方案1】:

在这个配置中很难看出你想要什么。不过可能

server 
       listen 443 spdy ssl;
       server_name foobar.com;
       ssl_certificate /etc/nginx/ssl/server.crt;
       ssl_certificate_key /etc/nginx/ssl/server.key;
        #error_page  404         = @notfound;
        access_log /var/log/access.foobar.com.log;
        error_log /var/log/error.foobar.com.log;
        location / 
                proxy_pass http://127.0.0.1:9030;
                proxy_pass_header Server;
                proxy_set_header Host $http_host;
                proxy_redirect off;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Scheme $scheme;
                proxy_connect_timeout 60;
                proxy_read_timeout 120;


        



server 
        listen 80;
        server_name foobar.com;
        return 301 https://foobar.com$request_uri;


此配置将所有请求从 http(80 端口)重定向到同一服务器上的 https(443 端口)。并且在 443 端口请求是后端的代理。

【讨论】:

我实际上想通了,似乎我的服务器块都搞砸了,我将它们更改为看起来像您的答案并且它有效。

以上是关于https设置后Nginx重定向到默认欢迎页面的主要内容,如果未能解决你的问题,请参考以下文章

Nginx 总是将 Laravel 路由重定向到默认的根 index.php 页面

Dockerized Nginx将不同的子域重定向到同一页面

在 Spring Boot 应用程序中为 AWS Beanstalk 的 nginx 设置 HTTP 到 HTTPS 重定向

Nginx 使用 http -> https 重定向丢失 POST 变量

NGINX 将 http 重定向到 https,将非 www 重定向到 ww

使用 Nginx 将 HTTP 重定向到 HTTPS