我在Debian服务器(ip 192.168.1.193)中运行rails应用程序,并且乘客是独立的
$ cd /home/hector/webapps/first
$ passenger start -a 127.0.0.1 -p 3000
我想要提供此应用程序将Nginx与反向代理一起投放到不同的子文件夹中:
http://192.168.1.193/first
我的nginx.conf服务器:
...
server {
listen 80;
server_name 127.0.0.1;
root /home/hector/webapps/first/public;
passenger_base_uri /first/;
location /first/ {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
}
}
...
然后我运行Nginx服务器
$ /opt/nginx/sbin/nginx
使用此配置运行一个rails应用程序似乎一切正常。
但是当我尝试添加我的第二个应用
时$ cd /home/hector/webapps/second
$ passenger start -a 127.0.0.1 -p 3001
使用此nginx.conf文件:
...
server {
listen 80;
server_name 127.0.0.1;
root /home/hector/webapps/first/public;
passenger_base_uri /first/;
location /first/ {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
}
}
server {
listen 80;
server_name 127.0.0.1;
root /home/hector/webapps/second/public;
passenger_base_uri /second/;
location /second/ {
proxy_pass http://127.0.0.1:3001;
proxy_set_header Host $host;
}
}
…
我重新加载Nginx服务器配置
$ /opt/nginx/sbin/nginx -s reload
nginx: [warn] conflicting server name "127.0.0.1" on 0.0.0.0:80, ignored
我收到警告,我无法从
访问第二个应用http://192.168.1.193/second/
服务器为第二个应用返回404,第一个应用仍在运行。
答案 0 :(得分:5)
我认为您只需将两个位置放在同一台服务器上:
server {
listen 80;
server_name 127.0.0.1;
location /first/ {
root /home/hector/webapps/first/public;
passenger_base_uri /first/;
proxy_pass http://127.0.0.1:3000/;
proxy_set_header Host $host;
}
location /second/ {
root /home/hector/webapps/second/public;
passenger_base_uri /second/;
proxy_pass http://127.0.0.1:3001/;
proxy_set_header Host $host;
}
}