如何使用Nginx对除特定网址之外的所有网址进行网址重写?

时间:2015-05-12 10:42:32

标签: nginx url-rewriting

我已在Nginx 1.8中部署了我的Web应用程序,并使用Nginx进行反向代理配置。

我希望发生以下情况。我能够实现1& 2.如何在Nginx配置中实现5? 3&图4是场景5的示例场景

  1. 浏览器中的网址http://localhost - >必须显示index.html
  2. 网址http://localhost/app - >必须将proxy_pass发送到http://localhost:8081
  3. 网址http://localhost/login - >必须将index.html显示为http://localhost
  4. 网址http://localhost/dashboard - >必须将index.html显示为http://localhost
  5. 网址http://localhost/Anything_Other_than_app - >必须显示 index.html为http://localhost
  6. 我的问题是,这个index.html有一个登录功能,一旦成功登录,它会将用户重定向到一个URL http://localhost/dashboard并显示用户列表。如果单击任何用户名,则会重定向到http://localhost/user以显示其详细信息。

    UseCase: 现在,如果我直接输入http://localhost/dashboardhttp://localhost/user网址,Nginx会在我的网站下搜索此文件夹和索引页面root并给出404错误。相反,我想要的是显示Index.html页面,该页面具有显示用户列表或基于会话存在与否的登录页面的逻辑。

    我们使用的解决方案

    location = /index.html {
             root   myTestApp;
            }
            location ~* .*\.png$ {
             root   myTestApp;
            }
            location ~* .*\.jpg$ {
             root   myTestApp;        
            }
            location ~* .*\.css$ {
             root   myTestApp;        
            }
            location ~* .*\.gif$ {
             root   myTestApp;        
            }
            location ~* .*\.js$ {
             root   myTestApp;
            }   
    
            location / {
                root   myTestApp;
                rewrite ^(.*)$ /index.html;          
            }  
    
          location /app {
                proxy_pass http://localhost:8081;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;              
    
            }  
    

1 个答案:

答案 0 :(得分:1)

location / {
    try_files /index.html =404;
}

location /app/ {
    # proxy to your app
}