Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nginx 如何在本地网络上为meteor应用程序配置乘客_Nginx_Meteor_Passenger - Fatal编程技术网

Nginx 如何在本地网络上为meteor应用程序配置乘客

Nginx 如何在本地网络上为meteor应用程序配置乘客,nginx,meteor,passenger,Nginx,Meteor,Passenger,我在与Phusion Passenger在我的局域网上部署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/appna

我在与Phusion Passenger在我的局域网上部署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得到一个欢迎页面,并得到“需要进一步配置”的消息

我应该如何更改配置,以便可以使用servername打开应用程序,或者更确切地说是使用“servername/appname”,因为我计划在同一台服务器上托管多个meteor应用程序

编辑:日志文件
/var/log/ngnix/access.log
中的更多信息:

我在连接到“192.168.178.52”时看到:

…这是在连接到“ubuntu64”时:


顺便说一句,我现在看到第一行有一个ipV4地址,第二行有一个ipV6地址。这可能是问题的一部分吗?

您的编辑澄清了您的问题。您还应该允许虚拟主机在IPv6上侦听

这很简单:

server {
  listen [::]:80 ipv6only=off; # added line
  server_name ubuntu64;

  # the rest of your config
}
有用信息:

添加:确保您的系统允许
IPv6
套接字在
IPv4+IPv6
模式下工作:

$ sysctl net.ipv6.bindv6only
net.ipv6.bindv6only = 0

网络中的其他PC如何知道此地址?他们是否已将其添加到他们的
/etc/hosts
中,或者他们正在使用本地DNS服务器,而此地址正在解析为您的服务器PC?他们正在使用我的(FritzBox)路由器上的DNS服务器。而此
ubuntu64
正在解析为与您的
nginx
相同的IP地址,请继续收听,正确吗?
kantoor:~willem$ping ubuntu64 ping ubuntu64.fritz.box(192.168.178.52):56个数据字节,192.168.178.52中的64个字节:icmp_seq=0 ttl=64 time=0.276 ms
应用此编辑后,现在这两个地址都给我一个带有“需要进一步配置”的Nginx欢迎屏幕…连接到192.168.178.52会导致:
192.168.178.77---[27/Sep/2017:14:27:25+0200]“GET/HTTP/1.1“304 0”-“Mozilla/5.0(Macintosh;Intel Mac OS X 10_12_6)AppleWebKit/537.36(KHTML,像Gecko)Chrome/61.0.3163.100 Safari/537.36”
并连接到“ubuntu64”给出
2001:983:e6ab:1:10d3:8AD:23f----[27/Sep/2017:14:28:02+0200]“GET/HTTP/1.1”304 0“-”Mozilla/5.0(Macintosh;英特尔Mac OS X 10_12_6)AppleWebKit/537.36(KHTML,像Gecko)Chrome/61.0.3163.100 Safari/537.36”
请参阅我之前的评论。或者您需要更多日志吗?(在
/var/log/nginx/error.log中没有错误)我刚刚完全重新启动了服务器,现在地址“ubuntu64”正常工作。键入准确的ip地址不再有效,但我认为这不是问题…@willemx尝试在添加的行中添加
ipv6only=off
,如下所示:
侦听[:]:80 ipv6only=off;
,这应该可以修复IPv4地址不起作用的问题(我也编辑了我的答案)。
server {
  listen [::]:80 ipv6only=off; # added line
  server_name ubuntu64;

  # the rest of your config
}
$ sysctl net.ipv6.bindv6only
net.ipv6.bindv6only = 0