我使用nginx作为Web服务器和启用了SSL的反向代理。
Web服务器提供WoltLab Suite论坛5.0.0(以前称为刻录板),并将一些子域代理到不同的主机,如NodeJS后端,Tomcat后端和许多其他不同的服务。
到目前为止这种方法很有效,但现在我遇到了一个问题,即我不能再使用子域来实现这一目标。
请不要问为什么,请不要。
现在,我不能再使用子域了,我试图让它使用子目录。
一个例子:
xyz.example.com 指向 12.13.14.15 的nginx服务器。
nginx将对 xyz.example.com 的所有请求代理为 10.20.30.40:1234
现在我希望nginx将对 example.com/xyz / 的所有请求代理到 10.20.30.40:1234
我使用Apache Archiva作为后端服务,但是我的NodeJS后端等所有其他服务都拒绝使用我当前的配置正常工作。 它将我发送到BurningBoard,它向我显示了他们的页面未找到页面。
example.com/xyz/admin/index.php 变为 example.com/admin/index.php 当然不会工作。
代理Archiva的目录具有完全相同的配置,当然只有其他目录名称。 在我从Web上调用它后,Archiva URL看起来像这样:
example.com/repo/ 成为 example.com/repo/#welcome ,并向我展示Archivas欢迎页面。
这正是我对其他服务的要求。
以下是我目前的nginx配置文件(用X替换敏感数据):
<=== sites-available/default ===>
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name XXXX.XX www.XXXX.XX;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
include snippets/ssl-XXXXX.XX.conf;
include snippets/ssl-params.conf;
root /var/www/html;
include /etc/nginx/snippets/proxies.conf;
# the last try_files argument is for SEO friendly URLs for the WSF 5.0
location / {
index index.php;
try_files $uri $uri/ /index.php?$uri&$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
# Lets Encrypt automation
location ~ /.well-known {
allow all;
}
location ~ /\.ht {
deny all;
}
}
<=== snippets/proxies.conf ===>
# Apache Archiva
location /repo {
rewrite ^/repo(/.*)$ $1 break;
proxy_pass http://XXXXXXXX:XXXXX;
return 404;
}
# Git Solution
location /git {
rewrite ^/git(/.*)$ $1 break;
proxy_pass http://XXXXXXXX:XXXXX;
return 404;
}
# Filehosting
location /cloud {
rewrite ^/cloud(/.*)$ $1 break;
proxy_pass http://XXXXXXXX:XXXXX;
return 404;
}
# NodeJS
location /webinterface {
rewrite ^/webinterface(/.*)$ $1 break;
proxy_pass https://XXXXXXXX:XXXXX;
include /etc/nginx/snippets/websocket-magic.conf;
return 404;
}
任何想法如何解决这个问题?
此外,如果您需要更多信息,请参阅nginx&#39;版本等。