configurationGoogle Domains,EC2和Nginx

尝试通过Google Domainsconfiguration域名指向我的EC2 (Ubuntu服务器)实例时,我遇到了一个很大的问题。

我将nginx设置为反向代理服务于Django应用程序。 我还configuration了一个弹性IP与EC2实例关联。 当我访问弹性IP( 34.XXX.XXX.28 )时,我得到的应用程序就好了。 这告诉我,一切都在EC2实例(nginx,Django应用程序等)内正确configuration。

问题是当我访问我的域名在www.mydomain.com ,我得到这个页面:

欢迎来到nginx!

如果你看到这个页面,nginx web服务器已经成功安装并正常工作。 需要进一步的configuration。

有关在线文档和支持,请参阅nginx.org。 商业支持可在nginx.com上find。

感谢您使用nginx。

我很困惑为什么直接访问弹性IP工作,但通过域名( www.mydomain.com )访问将导致默认的nginx页面。 有人能指点我的方向吗?

这里是一些背景:

  • 这是我的Google Domainsconfiguration
  • 这些是我的弹性IP和EC2安全入站规则configuration
  • 我的nginx被configuration为侦听端口80.这是我的configuration:
 upstream djangoapp { server unix:/var/www/run/djangoapp.sock; } server { listen 80; server_name 34.XXX.XXX.28; location / { proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://djangoapp ; } location /static/ { alias /var/www/djangoapp/static/; autoindex on; } } 

Nginx可以监听同一个IP地址上的多个网站,包括http和https。 现在,您可以监听对特定IP的请求,而不是域名。 解决的办法是指定你想要听的域名

 server_name example.com www.example.com; 

你通常应该只听一个域名。 子域名应该被转发到主域名,不pipewww或者根域是你认为的“主”,完全取决于你。

 # Main server server { listen 80; server_name example.com; // Locations etc } server { listen 80; server_name www.example.com; return 301 https://example.com$request_uri; } 

您也可以将任何给定的服务器阻止“默认服务器”。 这可能是您的站点的主要服务器块,或者它可能是另一个阻止您的服务器通过IP响应。 您可能不想回应IP,因为互联网不断扫描

 server { listen 80 default_server; server_name 1.2.3.4 example.com; } 

这是一个默认的服务器,拒绝stream量到您的IP不是由特定的服务器块处理

 server { listen 80 default_server; server_name _; # Wildcard, any domain is served return 444; # This means "go away", effectively } 

当您使用您的网站的公共IP时,它正在逃脱DNS。 你正在查看100%正确的东西,没有DNS之间的caching机制之间。 没有错误日志,完整configuration的精确细节可以说。 但Nginx的configuration是错误的,像其他人指出的, 显然Nginx有文档 。 在官方文档中给出configuration示例。 你会看到他们说类似的格式,像其他的答案,这里的评论。

只有我们可以说:

  1. 在debugging过程中将DNS的TTL设置为非常低,如30秒
  2. 并设置server_name www.your-domain-name.com; 来自nginx。
  3. 然后检查DNS传播
  4. 通过Tor浏览器进行检查。 可能你正在看到caching页面。

更正后,运行nginx -t config test,然后重新启动nginx才能生效。

Nginx正在监听IP地址。 您需要在“server_name”指令中添加您的域名。 然后重新加载nginx,它应该工作正常。