如何在本地网络上为 meteor 应用程序配置 Passenger
How to configure Passenger for meteor app on local network
我在使用 Phusion Passenger 在我的 LAN 上部署 Meteor 应用程序时遇到了问题 运行。
该应用程序 运行 在 Ubuntu 16.04 服务器上。
/etc/nginx/sites-enabled
中应用程序的配置是:
server {
listen 80;
server_name ubuntu64;
# Tell Nginx and Passenger where your app's 'public' directory is
root /var/www/appname/bundle/public;
# Turn on Passenger
passenger_enabled on;
# Tell Passenger that your app is a Meteor app
passenger_app_type node;
passenger_startup_file main.js;
# Tell your app where MongoDB is
passenger_env_var MONGO_URL mongodb://user:pwd@localhost:27017/appname;
# Tell your app what its root URL is
passenger_env_var ROOT_URL http://ubuntu64;
}
该应用程序运行良好,我可以从网络中的其他 PC 使用该应用程序,但前提是我在浏览器的地址栏中输入确切的服务器 IP 地址;如果我键入服务器名 ("ubuntu64"),则不会。如果我这样做,我会从 Ngnix 收到一个欢迎页面和 "Further configuration is required".
的消息
我应该如何更改配置,以便我可以使用服务器名打开应用程序,或者使用 "servername/appname" 打开应用程序,因为我计划在同一台服务器上托管多个流星应用程序。
编辑:来自日志文件的更多信息/var/log/ngnix/access.log
:
我在连接到“192.168.178.52”时看到了这个:
192.168.178.77 - - [27/Sep/2017:13:43:58 +0200] "GET /sockjs/info?cb=oj4gdaujfh HTTP/1.1" 200 89 "http://192.168.178.52/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
...这是连接到 "ubuntu64" 时的情况:
2001:983:e6ab:1:10d3:c8ad:4f1e:23f - - [27/Sep/2017:13:49:40 +0200] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
顺便说一句,我现在看到第一行是 ipV4 地址,第二行是 ipV6。这可能是(部分)问题吗?
您的编辑澄清了您的问题。你也应该允许你的虚拟主机监听 IPv6。
很简单:
server {
listen [::]:80 ipv6only=off; # added line
server_name ubuntu64;
# the rest of your config
}
有用信息:ngx_http_core_module : listen
documentation.
已添加:确保您的系统允许 IPv6
套接字在 IPv4+IPv6
模式下工作:
$ sysctl net.ipv6.bindv6only
net.ipv6.bindv6only = 0
我在使用 Phusion Passenger 在我的 LAN 上部署 Meteor 应用程序时遇到了问题 运行。 该应用程序 运行 在 Ubuntu 16.04 服务器上。
/etc/nginx/sites-enabled
中应用程序的配置是:
server {
listen 80;
server_name ubuntu64;
# Tell Nginx and Passenger where your app's 'public' directory is
root /var/www/appname/bundle/public;
# Turn on Passenger
passenger_enabled on;
# Tell Passenger that your app is a Meteor app
passenger_app_type node;
passenger_startup_file main.js;
# Tell your app where MongoDB is
passenger_env_var MONGO_URL mongodb://user:pwd@localhost:27017/appname;
# Tell your app what its root URL is
passenger_env_var ROOT_URL http://ubuntu64;
}
该应用程序运行良好,我可以从网络中的其他 PC 使用该应用程序,但前提是我在浏览器的地址栏中输入确切的服务器 IP 地址;如果我键入服务器名 ("ubuntu64"),则不会。如果我这样做,我会从 Ngnix 收到一个欢迎页面和 "Further configuration is required".
的消息我应该如何更改配置,以便我可以使用服务器名打开应用程序,或者使用 "servername/appname" 打开应用程序,因为我计划在同一台服务器上托管多个流星应用程序。
编辑:来自日志文件的更多信息/var/log/ngnix/access.log
:
我在连接到“192.168.178.52”时看到了这个:
192.168.178.77 - - [27/Sep/2017:13:43:58 +0200] "GET /sockjs/info?cb=oj4gdaujfh HTTP/1.1" 200 89 "http://192.168.178.52/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
...这是连接到 "ubuntu64" 时的情况:
2001:983:e6ab:1:10d3:c8ad:4f1e:23f - - [27/Sep/2017:13:49:40 +0200] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
顺便说一句,我现在看到第一行是 ipV4 地址,第二行是 ipV6。这可能是(部分)问题吗?
您的编辑澄清了您的问题。你也应该允许你的虚拟主机监听 IPv6。
很简单:
server {
listen [::]:80 ipv6only=off; # added line
server_name ubuntu64;
# the rest of your config
}
有用信息:ngx_http_core_module : listen
documentation.
已添加:确保您的系统允许 IPv6
套接字在 IPv4+IPv6
模式下工作:
$ sysctl net.ipv6.bindv6only
net.ipv6.bindv6only = 0