设置nginx支持自定义域名
Setting up nginx to support custom domain name
我有一个 Django Web 应用程序托管在一个基于 Debian 的 Ubuntu 作为 OS 的虚拟机上,nginx 反向代理 + gunicorn 作为网络服务器。
此 Web 应用程序的 DNS 是 myapp.cloudapp.net
。我还有一个 ccTLD mydomain.pk
我需要配置为此 Web 应用程序的自定义域名。
我原来的注册商只支持名称服务器。因此,我在 dns.he.net(一个免费的 DNS 托管提供商)上创建了一个帐户来托管我的名称服务器,并为我的机器设置了 CName。
我的问题是,一旦我将 CName 设置为指向我的网络应用程序的 DNS,在浏览器中输入 mydomain.pk 只会显示一个通用的 Welcome to ngnix!
页面。然而,在浏览器中输入 myapp.cloudapp.net
(或 myapp.cloudapp.net:80
)会正确打开 Web 应用程序。为什么设置 CName 不起作用?
我已经与 dns.he.net 的支持人员交谈过 - 我被告知我的 CName 设置正确,并且我的 nginx 配置可能存在一些问题。
例如,这是我的 etc/nginx/sites-available/myproject
文件:
server {
listen 80;
server_name myapp.cloudapp.net;
charset utf-8;
underscores_in_headers on;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/myuser/projectpk/project;
}
location /static/admin {
root /home/myuser/.virtualenvs/projectpk/local/lib/python2.7/site-packages/django/contrib/admin/static/;
}
location / {
proxy_pass_request_headers on;
proxy_buffering on;
include proxy_params;
proxy_pass http://unix:/home/myuser/projectpk/project/project.sock;
}
error_page 500 502 503 504 /500.html;
location = /500.html {
root /home/myuser/projectpk/project/templates/;
}
}
删除 server_name
行,nginx 不需要它,除非您想根据收到的主机名提供不同的内容。
如果您删除该行,nginx 将响应任何到达您服务器的正确端口(在本例中为 80)的请求,并在 [=13] 中带有 myapp.cloudapp.net
或 mydomain.pk
=] header.
这假定 /etc/nginx/sites-enabled 中没有其他配置可以捕获请求。
我有一个 Django Web 应用程序托管在一个基于 Debian 的 Ubuntu 作为 OS 的虚拟机上,nginx 反向代理 + gunicorn 作为网络服务器。
此 Web 应用程序的 DNS 是 myapp.cloudapp.net
。我还有一个 ccTLD mydomain.pk
我需要配置为此 Web 应用程序的自定义域名。
我原来的注册商只支持名称服务器。因此,我在 dns.he.net(一个免费的 DNS 托管提供商)上创建了一个帐户来托管我的名称服务器,并为我的机器设置了 CName。
我的问题是,一旦我将 CName 设置为指向我的网络应用程序的 DNS,在浏览器中输入 mydomain.pk 只会显示一个通用的 Welcome to ngnix!
页面。然而,在浏览器中输入 myapp.cloudapp.net
(或 myapp.cloudapp.net:80
)会正确打开 Web 应用程序。为什么设置 CName 不起作用?
我已经与 dns.he.net 的支持人员交谈过 - 我被告知我的 CName 设置正确,并且我的 nginx 配置可能存在一些问题。
例如,这是我的 etc/nginx/sites-available/myproject
文件:
server {
listen 80;
server_name myapp.cloudapp.net;
charset utf-8;
underscores_in_headers on;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/myuser/projectpk/project;
}
location /static/admin {
root /home/myuser/.virtualenvs/projectpk/local/lib/python2.7/site-packages/django/contrib/admin/static/;
}
location / {
proxy_pass_request_headers on;
proxy_buffering on;
include proxy_params;
proxy_pass http://unix:/home/myuser/projectpk/project/project.sock;
}
error_page 500 502 503 504 /500.html;
location = /500.html {
root /home/myuser/projectpk/project/templates/;
}
}
删除 server_name
行,nginx 不需要它,除非您想根据收到的主机名提供不同的内容。
如果您删除该行,nginx 将响应任何到达您服务器的正确端口(在本例中为 80)的请求,并在 [=13] 中带有 myapp.cloudapp.net
或 mydomain.pk
=] header.
这假定 /etc/nginx/sites-enabled 中没有其他配置可以捕获请求。