我有一个节点应用程序,它接受以 开头的所有路由/
。它的 Nginx / Passenger 配置为:
server {
listen 8889;
server_name localhost;
location / {
root /var/www/portal/public;
passenger_enabled on;
passenger_min_instances 1;
passenger_app_env production;
}
location ~ /error/(.+) {
alias /var/www/error-pages/$1;
}
}
我想将应用程序移动到运行,/portal
但不对节点应用程序进行任何更改。我尝试过这样的方法,但没有成功:
server {
listen 8889;
server_name localhost;
root /var/www/portal/public;
location / {
return 301 /client;
}
location /portal {
passenger_base_uri /;
passenger_app_root /var/www/portal;
passenger_document_root /var/www/portal/public;
passenger_min_instances 1;
passenger_app_env production;
passenger_enabled on;
}
location ~ /error/(.+) {
alias /var/www/error-pages/$1;
}
}
问题是应用程序继续接收以/portal
而不是 为前缀的请求/
。我尝试添加rewrite
语句,但它们似乎不会影响 Passenger 传递到应用程序的内容。
答案1
改成。passenger_base_uri /;
passenger_base_uri /portal;
从官方文档:
8.2.2. 乘客基地
用于指定给定的 URI 是应由 Phusion Passenger 提供服务的独特应用程序。