在 nginx 中配置重写规则
configuring rewrite rules in nginx
我在端口 80 上有 ngnix 网络服务器 运行。我在 9000 端口上有一个 Nodejs 运行。我需要将来自我的 nginx 的请求重写到端口 3000 上 运行 的应用程序服务器。
我尝试使用以下选项进行配置,但它正在重定向到浏览器而不是转发到应用服务器。当有 /hosts.json 的请求时,需要将其重定向到 http://appserver.corp.cn.com:3000/hosts/hosts.json
。请让我知道哪里出错了。
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/localhost.access.log;
location / {
rewrite ^/hosts.json http://appserver.corp.cn.com:3000/hosts.json permanent;
rewrite ^/hosts/bu.json http://appserver.corp.cn.com:3000/hosts/bu.json permanent;
proxy_pass http://localhost:9000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
我需要为下面的 url 模式设置 proxy_pass
location ~ ^/hosts/bu/(.*)/app/(.*)$ {
proxy_pass http://appserver.cnma.com:3000/hosts/bu//app/;
}
您想根据 URI 代理到不同的服务器。有一种自然的方法,就是在适当的 location
中输出不同的 proxy_pass
指令:
server {
...
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
location / {
proxy_pass http://localhost:9000;
}
location /hosts.json {
proxy_pass http://appserver.corp.cn.com:3000;
}
location /hosts/bu.json {
proxy_pass http://appserver.corp.cn.com:3000;
}
location /hosts/bu/ {
proxy_pass http://appserver.corp.cn.com:3000;
}
}
我在端口 80 上有 ngnix 网络服务器 运行。我在 9000 端口上有一个 Nodejs 运行。我需要将来自我的 nginx 的请求重写到端口 3000 上 运行 的应用程序服务器。
我尝试使用以下选项进行配置,但它正在重定向到浏览器而不是转发到应用服务器。当有 /hosts.json 的请求时,需要将其重定向到 http://appserver.corp.cn.com:3000/hosts/hosts.json
。请让我知道哪里出错了。
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/localhost.access.log;
location / {
rewrite ^/hosts.json http://appserver.corp.cn.com:3000/hosts.json permanent;
rewrite ^/hosts/bu.json http://appserver.corp.cn.com:3000/hosts/bu.json permanent;
proxy_pass http://localhost:9000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
我需要为下面的 url 模式设置 proxy_pass
location ~ ^/hosts/bu/(.*)/app/(.*)$ {
proxy_pass http://appserver.cnma.com:3000/hosts/bu//app/;
}
您想根据 URI 代理到不同的服务器。有一种自然的方法,就是在适当的 location
中输出不同的 proxy_pass
指令:
server {
...
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
location / {
proxy_pass http://localhost:9000;
}
location /hosts.json {
proxy_pass http://appserver.corp.cn.com:3000;
}
location /hosts/bu.json {
proxy_pass http://appserver.corp.cn.com:3000;
}
location /hosts/bu/ {
proxy_pass http://appserver.corp.cn.com:3000;
}
}