Configuration 使用子域配置Nginx

Configuration 使用子域配置Nginx,configuration,nginx,amazon-ec2,subdomain,Configuration,Nginx,Amazon Ec2,Subdomain,我已经做了之前的研究,但似乎找不到如何正确配置nginx以接受子域 我目前已为mydomain.com正确配置,但未为analytix.mydomain.com配置: server { listen 80; server_name *.mydomain.com; access_log /home/ubuntu/virtualenv/mydomain/error/access.log; error_log /hom

我已经做了之前的研究,但似乎找不到如何正确配置nginx以接受子域

我目前已为mydomain.com正确配置,但未为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\u name
声明正在接受
.mydomain.com
,这很好

如果我访问
analytix.mydomain.com
,它会抛出一个Http 500默认值,这很好,因为它会从
mydomain.com

该域已分发到此服务器,我正在尝试访问它


如何在路径上指定文件夹来存放
analytix.mydomain.com
?我假设需要更改nginx conf中的一个属性(如上所示)

创建一个新的
server
块,将
server\u名称设置为所需的域。nginx的正常目录和文件结构如下所示:

/etc/nginx
|
|---- /sites-available
|     |
|     |---- default.conf
|
|---- /sites-enabled
      |
      |---- default.conf -> ../sites-available/default.conf
/etc/nginx
|
|---- /sites-available
|     |
|     |---- analytix.conf
|     |
|     |---- default.conf
|
|---- /sites-enabled
      |
      |---- analytix.conf -> ../sites-available/analytix.conf
      |
      |---- default.conf -> ../sites-available/default.conf
您必须在
站点可用
中为您的子域创建一个新文件,其中包含新的
服务器
块,并在
站点启用
中创建指向此新文件的符号链接。只需重新加载nginx即可启动新服务器

您的新文件结构如下所示:

/etc/nginx
|
|---- /sites-available
|     |
|     |---- default.conf
|
|---- /sites-enabled
      |
      |---- default.conf -> ../sites-available/default.conf
/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\u name*.mydomain.com
服务器\u name analytix.mydomain.com

# ln -s analytix.conf ../sites-enabled/
# nginx -t
只有当它说您的配置正常(应该正常)时才继续

就是这样(请注意,以上所有命令都是针对基于Debian的发行版的,如果您使用其他命令,某些命令可能会有所不同)


为了在服务器上交付不同软件的内容,您必须更改配置中的
root
指令,并将其指向其他软件的文档根

# editor analytix.conf
更改
root/home/ubuntu/virtualenv/mydomain/homelaunch/
根/路径/到/其他/软件
并重新加载nginx

# nginx -t && service nginx reload

就这样,您的新应用程序现在应该可以使用了。

尝试更改服务器名称:

server_name "~^(?<sub>.+)\.mydomain\.com$";
server\u name“~^(?.+)\.mydomain\.com$”;

谢谢您的回答。我唯一的问题是
ln-s analytix.conf../sites enabled/
,但当我将文件更改为绝对路径时,它按预期工作-
ln-s/etc/nginx/sites available/analytix.conf../sites enabled/
您需要在正确的目录中才能执行答案中所示的操作,请在你的答案中添加一些解释,以便其他人可以从中学习