从 root 配置 nginx 重定向

从 root 配置 nginx 重定向

我正在尝试配置 nginx,但尽管我多次尝试,它还是无法正常工作。我需要的是:

  • 端口 80,/download由 nginx 提供服务
  • 端口 80,其他内容重定向到同一台机器的端口 8080

这很好用,但现在我只需要在根的情况下(http://我的主机/)客户端被重定向到默认应用程序/Games。我当前的配置是错误的,并无限循环地重定向我。我从中得到了一些想法这里但无法使其工作。重定向示例:

ex1: http://myhost/  --> http://myhost/Games --> http://localhost:8080/Games
ex2: http://myhost/Books --> http://localhost:8080/Books

我努力了

        location / {
            proxy_pass  http://localhost:8080/Games;
        }

但这似乎对一切都起作用(例如:/Books、/XYZ、...)。我认为指定精确根目录时的重定向是最干净的。

另外,我需要在 HTTPS 上复制此内容。我想这也适用于“stream”元素。


nginx.conf:

http {
    server {
        listen  80;
        root /home/www/;
        location = / {
            return 301 http://$host/Games;
        }
        location / {
            proxy_pass  http://localhost:8080;
        }
        location /download/ {
            ....
        }
    }
}

stream {
    server {
        listen  443;
        ...
    }   
} 

答案1

这里的问题到底是什么?您的配置对我有用:

server {
    listen 80;
    listen [::]:80;

    server_name 192.168.0.2;
    root /var/www;

    location = / {
        return 301 http://$host/folder;
    }

    location / {
        proxy_pass http://otherserver:80;
    }
}

日志:

[22/Feb/2018:17:04:55 +0100] "GET / HTTP/1.1" 301
[22/Feb/2018:17:04:55 +0100] "GET /folder HTTP/1.1" 301
[22/Feb/2018:17:04:55 +0100] "GET /folder/ HTTP/1.1" 200
[22/Feb/2018:17:11:29 +0100] "GET /index.html HTTP/1.0" 200

您在日志中看到了什么?请求是否完全无法代理,还是本地主机导致了问题?您的本地主机的配置是什么样的?信息太少,无法帮助您。

另外,我需要在 HTTPS 上复制此内容。我想这也适用于“stream”元素。

不确定您的意思,但您可以添加具有相同配置的另一个服务器块,listen 443而不是listen 80添加 ssl 指令。

相关内容