当前位置: 首页 > 知识库问答 >
问题:

如何在nginx中将多条路径指向代理服务器

农均
2023-03-14

我试图设置nginx位置来处理各种路径,并将它们代理到我的WebApp。

以下是我的意见:

    server {

    listen          80;
    server_name     www.example.org;

    #this works fine
    location / { 
       proxy_set_header X-Forwarded-Host $host;
       proxy_set_header X-Forwarded-Server $host;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_pass http://localhost:8081/myApp/;
    }

    #not working
    location ~ ^/(.+)$ { 
       proxy_pass http://localhost:8081/myApp/$1;
    }
}

我想用各种路径访问myApp,比如:/myApp/abc、/myApp/def、myApp/geh或/myApp/zzz。当然,这些路径在MyApp中是不可用的。我希望他们指向根的myApp和保持URL。可以用nginx存档吗?

共有1个答案

闾丘选
2023-03-14

Nginx位置按定义顺序匹配。location/基本上是通配符位置,因此它将匹配所有内容,没有任何内容会到达第二个位置。颠倒这两个定义的顺序,它应该起作用。但实际上,现在我看得更仔细了,我认为这两个地方本质上都在做同样的事情:

/whatever/path/ ->>proxies-to->> http://localhost:8081/myApp/whatever/path/
 类似资料:
  • 问题内容: 作为我的标题,这是位于conf.d / api-server.conf中的配置文件 nginx.conf文件与默认设置相同。 将请求发送到api.localhost(api.localhost / admin / login)之后,我仍然收到405错误: 问题答案: 问题是您的if条件不会在中发送父项中的标头。如果您检查飞行前响应标头,它将是 那什么也没给。因此,有两种可能的解决方案。

  • 我是Kubernetes的新手,想了解如何向外部世界公开在Kubernetes中运行的服务。我已经使用集群上的节点端口公开了它。例如:一个服务在主机上公开端口31234,我可以通过https://kubeserverip:31234从另一个服务器访问该服务。

  • 我有一个Nginx服务器托管一个web应用程序,当直接访问时工作正常。其配置如下 现在我必须从另一个Nginx服务器上服务这个应用程序,所以我设置了如下所示的反向代理 当我从server2访问应用程序时,我会得到如下错误,例如,当我访问HTTP:server2.com/app/css/app.css时 [error]6601#0:*1 open()“/data/www/app/css/app.cs

  • 问题内容: 我要转发的所有请求: www.domain.com/ api / whaterver / comes / next– api .domain.com / whatever / comes / next 原因是避免www.domain.com的浏览器CORS请求api.domain.com 可能值得一提的是,nginx在Docker容器中运行。 我试图用下面的位置块来完成,但是失败了: