我不确定nginx是否实际上可以实现我想要的行为,但是可以。
我有一个运行在端口81上的服务器,具有以下nginx配置:
CONFIGURATION OF SERVER1 NGINX
server {
listen 81;
server_name SERVER_DNS_NAME;
location /server1 {
proxy_pass http://127.0.0.1:8084/;
proxy_set_header Host $host;
}
location / {
proxy_pass http://127.0.0.1:8084;
proxy_set_header Host $host:$server_port;
}
}
我在具有类似配置的端口82上运行了另一台服务器。现在我想做的是能够从80端口以不同的uri访问它们。
例如:URL / server1将带我到第一台服务器,URL / server2将带我到第二台服务器。
CONFIGURATION OF NGINX LISTENING ON PORT 80
server {
listen SERVER_IP:80;
location /server1{
proxy_set_header Host $host;
http://SERVER_IP:81;
}
location /server2 {
proxy_pass http://SERVER_IP:82;
proxy_set_header Host $host;
}
当我转到URL / server1时,此方法工作正常。我已成功路由到server1上的主页。但是,一旦我单击server1页面上存在的任何链接,我就会得到一个404。这是因为该站点尝试转到URL / some_subdir_of_server1(没有映射),而不是执行URL / server1 / some_subdir_of_server1。这种行为可行吗?如果可以,怎么办?
谢谢!
答案 0 :(得分:0)
请注意斜杠:在您的示例中,
proxy_pass http://SERVER_IP:81/;
,它将代理URL设置为根/