Nginx 在端口 80 上运行,我使用它来反向代理 URL,并/foo
以3200
这种方式使用端口路径:
location /foo {
proxy_pass http://localhost:3200;
proxy_redirect off;
proxy_set_header Host $host;
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我在 port 上有一个应用程序3200
,我不希望将初始/foo
值发送到该应用程序。也就是说 - 当我访问时http://localhost/foo/bar
,我只想/bar
成为应用程序接收到的路径。所以我尝试将此行添加到上面的位置块:
rewrite ^(.*)foo(.*)$ http://localhost:3200/$2 permanent;
Run Code Online (Sandbox Code Playgroud)
这会导致 302 重定向(更改 URL),但我想要 301。我该怎么办?
我对 NGINX 的经验很少。我试图将它用作一些运行 node.js 的 docker 容器的反向代理。目标是所有请求都将通过 NGINX 汇集。根据路由(url 路径),某个路由domain.com/graphql
将通过 NGINX 传递到不同的 docker 容器。这domain.com/graphql
基本上是我的 API 端点。
我遇到的问题是,客户端上的 JS 发出的所有 Ajax/Relay 客户端请求都作为 301 从 NGINX 传递
要求:
Request URL:http://domain.com/graphql
Request Method:POST
Status Code:301 Moved Permanently
Remote Address:192.168.99.100:80
Response Headers
view source
Connection:keep-alive
Content-Length:185
Content-Type:text/html
Date:Thu, 08 Sep 2016 15:14:02 GMT
Location:http://domain.com/graphql/
Server:nginx/1.11.3
Request Headers
view source
accept:*/*
Accept-Encoding:gzip, deflate
Accept-Language:en-US,en;q=0.8,it;q=0.6
Cache-Control:no-cache
Connection:keep-alive
Content-Length:620
content-type:application/json
Host:nomralph.com
Origin:http://domain.com
Pragma:no-cache
Referer:http://domain.com/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, …
Run Code Online (Sandbox Code Playgroud)