Nginx 重定向前修剪NGNIX中的URL
我可以将ngnix配置为重定向Nginx 重定向前修剪NGNIX中的URL,nginx,Nginx,我可以将ngnix配置为重定向http://mydomain/group1到“Group1”服务器和http://mydomain/group2发送到“Group2”服务器。但是我需要删除组名并将剩余的URL传递给后端服务器 i、 e 应作为http://mydomain/index.html和类似的“Group2” 这可能吗 下面是我的配置文件 upstream group1 { server 10.18.1.10; } upstrea
http://mydomain/group1
到“Group1”服务器和http://mydomain/group2
发送到“Group2”服务器。但是我需要删除组名并将剩余的URL传递给后端服务器
i、 e
应作为http://mydomain/index.html
和类似的“Group2”
这可能吗
下面是我的配置文件
upstream group1
{
server 10.18.1.10;
}
upstream group2
{
server 10.18.1.11;
}
server
{
listen 80;
server_name 10.18.1.9;
location /group1/
{
proxy_pass http://group1;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location ~ /group2/(.*)
{
proxy_pass http://group2.$http_host/$1;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
试着这样做:
location ~* ^/group(\d*)/(.*) {
proxy_pass http://group$1.$http_host/$2;
}
这个snipplet所做的是捕获所有与regexp模式匹配的请求
^/group(\d*)/(.*)
表示“获取以/group/开头的所有内容”,同时将group后面的数字和斜杠后面的尾随部分捕获为变量。变量是按“捕捉”顺序排列的数字。因此,在该位置内,您可以使用它们使用原始请求中的“参数”将请求重写为您想要的任何内容。在这种情况下,您可以使用$1(组后的数字)通过主机名指示后端服务器,并使用$2来维护尾部部分$http_主机是对“主机:”http头的标准nginx引用。如果您有“静态”后端,您可以在代理通行证中省略除$2以外的所有内容。重定向实际上是指代理到后端?是的..我希望后端服务器提供请求。我感谢您的帮助。这个$1和$2以及$http_主机代表什么?“你能帮我理解这里发生了什么吗?”奇怪的托米在回答中解释道:“我按照你的解释做了修改,但它说的是坏网关,我做得对吗?”?。我已经为您的应用程序添加了conf文件reference@FreakyThommi检查错误日志中的真实内容。您需要查看nginx试图为您获取的结果URL。2013/12/10 17:37:18[错误]7220#0:*1135未定义解析程序来解析group2.10.18.1.9。我是否需要使用“重写”从URL修剪group1?我的配置现在附在问题后面
location ~* ^/group(\d*)/(.*) {
proxy_pass http://group$1.$http_host/$2;
}