如何将所有传入的HTTP请求重定向到Nginx配置文件中的特定URL?

时间:2018-11-26 06:16:16

标签: http spring-boot nginx server url-redirection

我知道,我知道。这个问题被问了太多次了,我也对此进行了很多研究。但是互联网上的所有解决方案都使我陷入困境。 我想将所有传入的HTTP请求重定向到特定的url /域。 例如,如果某人在浏览器的网址栏中输入-www.test.com或仅输入test.com,则应将用户重定向到http://test.com/home
这是我过去三天一直在努力实现的目标,不确定自己做错了什么。
这是我的服务器模块。

server {
        listen   80;
        server_name test.com;
        port_in_redirect off; 
     #  server_name_in_redirect off; 
        client_max_body_size 20M; 

 location / { 

      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 $scheme;
      proxy_redirect off; 
      proxy_pass          http://localhost:8000/ ;
      proxy_read_timeout  90;     
      return 301 http://test.com/home;

        }

}

上述配置给我一个错误-当我尝试访问网站时,在浏览器上出现too many redirection。还删除了return语句,给了我page not found错误,并且没有更改/重定向网址为http.test.com/home

PS-我也在端口443(https)的同一台服务器上也运行了另一个不同的网站,并且运行得非常好。我正在运行一个Spring-boot应用程序。
非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您编写了太多与重定向相关的代码,这就是为什么显示此错误的原因。

按如下所示更改服务器块。

server {
    listen   80;
    server_name test.com www.test.com;
    client_max_body_size 20M; 
    #return 301 http://test.com/home$request_uri;
}

location ~ ^/(?!home) { 
  return 301 http://test.com/home$request_uri;
}

location /home {
    root   /var/www/test.com/html/;
    index  index.html index.htm;
}