我做了我以前的研究,但似乎无法find如何正确configurationnginx接受一个子域名。
我目前正确地为mydomain.comconfiguration,但不是analytix.mydomain.com:
server { listen 80; server_name *.mydomain.com; access_log /home/ubuntu/virtualenv/mydomain/error/access.log; error_log /home/ubuntu/virtualenv/mydomain/error/error.log warn; connection_pool_size 2048; fastcgi_buffer_size 4K; fastcgi_buffers 64 4k; root /home/ubuntu/virtualenv/mydomain/homelaunch/; location /static/ { alias /home/ubuntu/virtualenv/mydomain/homelaunch/static/; } location / { proxy_pass http://127.0.0.1:8001; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"'; } }
server_name
声明接受<anythinghere>.mydomain.com
这是很好的。
如果我访问analytix.mydomain.com
,它会抛出一个Http 500默认值,因为它从mydomain.com
的现有应用程序中抛出
该域名已经传播到这个服务器,我试图访问它。
我怎样才能指定一个文件夹,在path,以容纳analytix.mydomain.com
的内容? 我会假设我会需要更改nginx conf中的属性(如上所示)
创建一个新的server
块,将server_name
设置为所需的域。 nginx的正常目录和文件结构如下所示:
/etc/nginx | |---- /sites-available | | | |---- default.conf | |---- /sites-enabled | |---- default.conf -> ../sites-available/default.conf
您必须在sites-available
创建一个新的文件,并在其中为您的子域sites-available
新的server
块,并在sites-enabled
创建一个符号链接。 一个简单的nginx重新加载将带来新的服务器。
您的新文件结构如下所示:
/etc/nginx | |---- /sites-available | | | |---- analytix.conf | | | |---- default.conf | |---- /sites-enabled | |---- analytix.conf -> ../sites-available/analytix.conf | |---- default.conf -> ../sites-available/default.conf
以下是在您的服务器上直接执行此操作所需的命令:
# cd /etc/nginx/sites-available # cat default.conf > analytix.conf # editor analytix.conf
更改行server_name *.mydomain.com;
到server_name analytix.mydomain.com
。
# ln -s analytix.conf ../sites-enabled/ # nginx -t
只有当它说你的配置没问题的时候才能继续(它应该是)。
# service nginx restart
就是这样(请注意,上述所有命令都是针对基于Debian的发行版的,如果您使用其他命令,某些命令可能会有所不同)。
为了在服务器上传递不同软件的内容,您必须更改配置中的root
指令,并将其指向其他软件的文档根目录。
# editor analytix.conf
更改root /home/ubuntu/virtualenv/mydomain/homelaunch/;
root /path/to/other/software;
并重新加载你的nginx。
# nginx -t && service nginx reload
就是这样,你的新应用程序应该现在就开始服务。