我是NGINX的业余爱好者,我想将NGINX设置为我的网络服务器的反向代理。 我想知道NGINX这些东西如下所列:
当浏览器发送带URL:http://nginxproxy.com/client/1.2.3.4/的请求时,此请求应传递给IP 1.2.3.4 http://1.2.3.4/的客户端,浏览器仍应显示URL nginxproxy / client / 1.2.3.4 / 同样的:
所有其他不会模式化的请求应该来到我的默认服务器myserver。
我可以使用NGINX吗?
经过研究,我尝试了以下配置: 但不幸的是,它没有用。地址已在浏览器的地址栏中更改为http:/1.2.3.4,而不是按预期更改为http:/nginxproxy.com/client/1.2.3.4。
server {
listen 80;
location ~ ^/client {
rewrite ^/client/?(.*) /$2 break;
proxy_pass $scheme://$1;
}
location / {
proxy_pass http://myserver.com;
}
}
非常感谢任何帮助。
答案 0 :(得分:2)
server {
listen 80;
location /client/ {
rewrite ^/client/(?<site>[^/]+)/? $scheme://$site;
}
location / {
proxy_pass $scheme://myserver.com;
}
}
答案 1 :(得分:1)
进行更多研究并基于@Cole输入,这是我的答案:
location ~ ^/client/(?<site>[^/]+)/? {
rewrite ^.*\/client\/(?<site>[^\/]+)\/?(.*) /$2 break; #passing all the remaining request URIs after <site> group to client server
proxy_pass $scheme://$site;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host/client/$site; #this help to keep the address as it is on the browser's address bar
proxy_set_header X-Forwarded-Proto $scheme;
}
location / {
proxy_pass $scheme://myserver.com
}