我们有一个 URL www.abc.com,它应该指向http://IP:8080/app1/index.html在 wildfly-8.2.0.Final 上运行。我们还有另一个 URL www.def.com 想要指向http://IP:8080/app2/index.html在同一个 wildfly 安装上。
如果我们使用:
server {
listen IP:80;
server_name www.abc.com;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://IP:8080/;
}
}
这是可行的,并允许我们将 www.abc.com 反向代理到http://IP:8080/这意味着我们得到了默认的 Wildfly 页面。这对我们没有帮助,因为我们有多个 URL 需要反向代理到 wildfly 上的不同应用程序。
这不起作用。
server {
listen IP:80;
server_name www.abc.com;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://IP:8080/app1/;
}
}
这不起作用。
server {
listen IP:80;
server_name www.abc.com;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://IP:8080/;
root /var/www/www.abc.com/public_html;
index index.html;
}
}
index.html 如下所示:
<html>
<head>
<meta http-equiv="Refresh" content="0;url=/app1/index.html">
<title>Index Redirect</title>
</head>
</body>
</html>
欢迎提出任何建议。
答案1
我有一个非常类似的程序正在运行,尽管我的后端是 JBoss,而不是 Wildfly。在相关部分,跳过我的 SSL 配置:
www1.example.com:
server {
listen IP:80;
server_name www1.example.com;
location / {
location /app1 {
proxy_pass http://IP:8080/app1$request_uri;
proxy_redirect http://IP:8080 http://www1.example.com;
# proxy_set_header directives as needed
}
}
location = / {
return 301 http://www1.example.com/app1
}
}
www2.example.com
# Like www1, but server_name www2.example.com and proxy paths set for app2.
我不知道这是否可以在向外界隐藏应用程序路径的同时发挥作用,但我怀疑只需将所有代理指令移动到location /
并省略即可location = / {}