我的nginx根目录是/ usr / share / nginx / html / ,我的Node.js应用程序位于/ root / app / 。 但是反向代理在nginx根目录下search应用程序。
我使用了以下位置块。
location /t { rewrite ^/t/(.*) /$1 break; proxy_pass http://127.0.0.1:3000; }
并将应用程序configuration中的基本uri更改为
baseURI: '/t'
但是我得到一个空白页面, 但标题栏显示“ AppName ”
这里是nginx错误日志
2017/10/26 16:41:43 [error] 3585#0: *5 connect() failed (111: Connection refused) while connecting to upstream, client: 49.206.123.228, server: _, request: "GET /t HTTP/1.1", upstream: "http://127.0.0.1:3000/t", host: "139.59.46.93" 2017/10/26 16:41:43 [error] 3585#0: *5 open() "/usr/share/nginx/html/50x.html" failed (2: No such file or directory), client: 49.206.123.228, server: _, request: "GET /t HTTP/1.1", upstream: "http://127.0.0.1:3000/t", host: "139.59.46.93" 2017/10/26 16:41:43 [error] 3585#0: *5 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 49.206.123.228, server: _, request: "GET /favicon.ico HTTP/1.1", host: "139.59.46.93", referrer: "http://139.59.46.93/t" 2017/10/26 16:41:43 [error] 3585#0: *5 open() "/usr/share/nginx/html/404.html" failed (2: No such file or directory), client: 49.206.123.228, server: _, request: "GET /favicon.ico HTTP/1.1", host: "139.59.46.93", referrer: "http://139.59.46.93/t" 2017/10/26 16:41:45 [error] 3585#0: *5 connect() failed (111: Connection refused) while connecting to upstream, client: 49.206.123.228, server: _, request: "GET /t/ HTTP/1.1", upstream: "http://127.0.0.1:3000/", host: "139.59.46.93" 2017/10/26 16:41:45 [error] 3585#0: *5 open() "/usr/share/nginx/html/50x.html" failed (2: No such file or directory), client: 49.206.123.228, server: _, request: "GET /t/ HTTP/1.1", upstream: "http://127.0.0.1:3000/", host: "139.59.46.93" ##### Ignore above errors. Forgot to use public IP 2017/10/26 16:43:45 [error] 3620#0: *1 open() "/usr/share/nginx/html/static/css/main.749f8f8f.css" failed (2: No such file or directory), client: 49.206.123.228, server: _, request: "GET /static/css/main.749f8f8f.css HTTP/1.1", host: "139.59.46.93", referrer: "http://139.59.46.93/t/" 2017/10/26 16:43:45 [error] 3620#0: *1 open() "/usr/share/nginx/html/404.html" failed (2: No such file or directory), client: 49.206.123.228, server: _, request: "GET /static/css/main.749f8f8f.css HTTP/1.1", host: "139.59.46.93", referrer: "http://139.59.46.93/t/" 2017/10/26 16:43:45 [error] 3620#0: *1 open() "/usr/share/nginx/html/static/js/main.5957a012.js" failed (2: No such file or directory), client: 49.206.123.228, server: _, request: "GET /static/js/main.5957a012.js HTTP/1.1", host: "139.59.46.93", referrer: "http://139.59.46.93/t/" 2017/10/26 16:43:45 [error] 3620#0: *1 open() "/usr/share/nginx/html/404.html" failed (2: No such file or directory), client: 49.206.123.228, server: _, request: "GET /static/js/main.5957a012.js HTTP/1.1", host: "139.59.46.93", referrer: "http://139.59.46.93/t/" 2017/10/26 16:43:48 [error] 3620#0: *1 open() "/usr/share/nginx/html/static/css/main.749f8f8f.css" failed (2: No such file or directory), client: 49.206.123.228, server: _, request: "GET /static/css/main.749f8f8f.css HTTP/1.1", host: "139.59.46.93", referrer: "http://139.59.46.93/t/" 2017/10/26 16:43:48 [error] 3620#0: *1 open() "/usr/share/nginx/html/404.html" failed (2: No such file or directory), client: 49.206.123.228, server: _, request: "GET /static/css/main.749f8f8f.css HTTP/1.1", host: "139.59.46.93", referrer: "http://139.59.46.93/t/" 2017/10/26 16:43:48 [error] 3620#0: *3 open() "/usr/share/nginx/html/static/js/main.5957a012.js" failed (2: No such file or directory), client: 49.206.123.228, server: _, request: "GET /static/js/main.5957a012.js HTTP/1.1", host: "139.59.46.93", referrer: "http://139.59.46.93/t/" 2017/10/26 16:43:48 [error] 3620#0: *3 open() "/usr/share/nginx/html/404.html" failed (2: No such file or directory), client: 49.206.123.228, server: _, request: "GET /static/js/main.5957a012.js HTTP/1.1", host: "139.59.46.93", referrer: "http://139.59.46.93/t/" 2017/10/26 16:43:50 [error] 3620#0: *3 open() "/usr/share/nginx/html/static/css/main.749f8f8f.css" failed (2: No such file or directory), client: 49.206.123.228, server: _, request: "GET /static/css/main.749f8f8f.css HTTP/1.1", host: "139.59.46.93", referrer: "http://139.59.46.93/t/" 2017/10/26 16:43:50 [error] 3620#0: *3 open() "/usr/share/nginx/html/404.html" failed (2: No such file or directory), client: 49.206.123.228, server: _, request: "GET /static/css/main.749f8f8f.css HTTP/1.1", host: "139.59.46.93", referrer: "http://139.59.46.93/t/" 2017/10/26 16:43:50 [error] 3620#0: *1 open() "/usr/share/nginx/html/static/js/main.5957a012.js" failed (2: No such file or directory), client: 49.206.123.228, server: _, request: "GET /static/js/main.5957a012.js HTTP/1.1", host: "139.59.46.93", referrer: "http://139.59.46.93/t/" 2017/10/26 16:43:50 [error] 3620#0: *1 open() "/usr/share/nginx/html/404.html" failed (2: No such file or directory), client: 49.206.123.228, server: _, request: "GET /static/js/main.5957a012.js HTTP/1.1", host: "139.59.46.93", referrer: "http://139.59.46.93/t/" 2017/10/26 16:43:50 [error] 3620#0: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 49.206.123.228, server: _, request: "GET /favicon.ico HTTP/1.1", host: "139.59.46.93", referrer: "http://139.59.46.93/t/" 2017/10/26 16:43:50 [error] 3620#0: *1 open() "/usr/share/nginx/html/404.html" failed (2: No such file or directory), client: 49.206.123.228, server: _, request: "GET /favicon.ico HTTP/1.1", host: "139.59.46.93", referrer: "http://139.59.46.93/t/"
如何在不将应用程序从/ root / app移动到nginx根目录的情况下成功反向代理?
更新:
在查看页面的源代码时,我可以看到nginx尝试从http://139.59.46.93 / static / js和/ static / css加载资源,当它应该从http://139.59.46.93加载它们时:3000
所以它基本上是代理港口, 而不是资源 。
我如何传递资源呢?
您正在使用/t location ,但是会重写^/t/(.*) ,所以nginx不会将请求重写为/t ,而是按原样传递给您的应用程序。
一般来说,你应该总是在location指令中使用尾部斜线,该尾部斜线应该与目录匹配(除非你绝对确定,你不需要它)。
在这个常见的情况下,还有一个捷径来replacenginx中的位置前缀。 试试这个:
location /t/ { proxy_pass http://127.0.0.1:3000/; # note this slash --------------^ }
proxy_pass文档说:
一个请求URI被传递给服务器,如下所示:
- 如果proxy_pass指令是用URI指定的,那么当一个请求被传递给服务器时,与该位置相匹配的标准化请求URI的一部分被指令中指定的URIreplace。
Nginx将用/从proxy_pass指令replace位置指令中的/t/ 。
也许你必须改变应用程序的baseURI到/t/太。