代码之家  ›  专栏  ›  技术社区  ›  Sumit

如何将所有传入的http请求重定向到nginx配置文件中的特定url?

  •  0
  • Sumit  · 技术社区  · 7 年前

    我知道,我知道。这个问题被问了很多次,我也研究了很多次。但互联网上的每一个解决方案都会把我引向死胡同。 例如,如果有人键入- www.test.com 或者干脆 test.com http://test.com/home
    这就是我过去3天一直在努力实现的目标,不知道自己做错了什么。
    这是我的服务器块。

    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 错误且未将url更改/重定向到 http.test.com/home

    PS—我在443端口(https)的同一台服务器上运行另一个不同的网站,运行得非常好。我正在运行一个springboot应用程序。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Pranay Kumbhalkar    7 年前

    你写了太多与重定向相关的代码,这就是为什么显示这个错误。

    改变你的服务器块如下。

    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;
    }