Nginx服务器使用IP,但不能使用任意域名

我有一个Ubuntu Server 14.04的主机和一个LEMP堆栈,我打算用作我正在开发的Web应用程序的登台/testing服务器。

我没有服务器的域名,它可以正常使用IP地址。 但是,对于某些testing,我需要使用域名访问它。 所以我已经将下列内容添加到本地机器的主机文件中:

1.2.3.4 nt1.stg 

在这个问题的IP显然不是我的服务器的真正的IP,但我使用nt1.stg作为域。

当我去http://1.2.3.4/path/to/script.php我得到了预期的回应。

但与http://nt1.stg/path/to/script.php我得到ERR_CONNECTION_RESET

我已经使用Wiresharkvalidation了使用第二个地址时发送的请求。 Wireshark捕获表明,随着请求,这种交换随之而来:

 Me > Server: (TCP) [SYN] Server > Me: (TCP) [ACK, SYN] Me > Server: (TCP) [ACK] Me > Server: (HTTP) GET /path/to/script.php HTTP/1.1 Server > Me: (TCP) [ACK] Server > Me: (TCP) [RST, ACK] 

这是我的nginxconfiguration文件, 在其中设置了server_name,并且也有default_server

 server { listen 80 default_server; server_name nt1.stg; root /var/www/nt/app; index index.php index.html; access_log /var/log/nginx/access.log; error_log /var/www/nt/nt1_data/logs/error.log; location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 

nt1.stg的请求没有错误或访问日志条目,就好像它从未收到过一样。

这可能是一个防火墙问题? 应该怎么调查呢?

更新

这个问题不是在这个答案中提供了一个解决scheme。 我用wget进行了检查,发生了同样的情况(与IP一起工作,不能和域一起工作)。

更新2

Per @ TheFiddlerWins的build议我也将域添加到服务器上的hosts文件(包括127.0.0.1和实际的服务器IP)。 这也没有解决这个问题。

更新3

Per @ drookie的build议我在服务器上做了一个tcpdump:

 tcpdump -i eth0 -s 65535 -w dumpfile.pcap -Z root 

在开始捕获之后,我向基于IP和基于名称的URL发出请求。 总结说:

 71 packets captured 72 packets received by filter 0 packets dropped by kernel 

使用Wireshark检查转储不会显示对基于名称的地址的请求。 尽pipe如此,本地捕获同时捕获服务器正在进行,显示了相同的旧结果 – 基于名称的地址的请求发送到正确的IP,并build立了TCP会话,HTTP请求发送到服务器和确认,但然后服务器发送一个TCP RST。

当wireshark告诉我这是发生了什么,我应该得出结论,确实发生。 如果服务器不负责,有人。

我唯一的猜测是,stream量通过一个数据中心代理透明地路由到我的服务器,它不喜欢这个请求被标记的(任意的)主机名不parsing到服务器IP的事实,因此丢弃了HTTP请求。

这是发生在一个digitalocean墨滴,我要打开支持票来证实这一点。

更新4

我已经伸出援手,这是他们告诉我的:

…你的液滴绝对不是一个代理的背后。 所有的水滴直接连接到互联网

如果networking确认数据包到达正确的主机,那么问题将出现在更高级别的防火墙/networking服务器上。 任何应用程序响应崩溃的迹象? 也许有一些configuration问题,应用程序没有像IP那样通过域来提交?

我在这方面没有debugging技能。 我能想到的是检查系统日志,iptables规则,如果有的话,ufw日志。 任何我应该寻找标志和嫌疑人的任何指导将不胜感激。

你为什么不为你的主机nt1.stg创build一个新的conf文件? 这将很快让你知道,如果它的Nginxconfiguration问题,networking问题或其他。

 server { listen 80; server_name nt1.stg; root /var/www/nt/app; index index.php index.html; access_log /var/log/nginx/access.log; error_log /var/www/nt/nt1_data/logs/error.log; location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }