【问题标题】:Configure Nginx with a Subdomain使用子域配置 Nginx
【发布时间】:2013-12-04 17:40:40
【问题描述】:

我已经完成了之前的研究,但似乎找不到如何正确配置 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_name 声明正在接受 <anythinghere>.mydomain.com,这很好。

如果我访问 analytix.mydomain.com ,它会抛出一个 Http 500 默认值,这很好,因为它会从 mydomain.com 的现有应用程序中抛出它

该域已经传播到我试图访问它的这台服务器。

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

【问题讨论】:

标签: configuration nginx amazon-ec2 subdomain


【解决方案1】:

创建一个新的server 块,在其中将server_name 设置为所需的域。 nginx正常的目录和文件结构如下:

/etc/nginx
|
|---- /sites-available
|     |
|     |---- default.conf
|
|---- /sites-enabled
      |
      |---- default.conf -> ../sites-available/default.conf

您必须在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

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

【讨论】:

  • 感谢您的回答。我遇到的唯一问题是ln -s analytix.conf ../sites-enabled/,但是当我将文件更改为绝对路径时,它按预期工作 - ln -s /etc/nginx/sites-available/analytix.conf ../sites-enabled/
  • 您需要在正确的目录中才能按照答案所示进行操作。
【解决方案2】:

尝试更改服务器名称:

server_name "~^(?<sub>.+)\.mydomain\.com$";

【讨论】:

  • 请在您的答案中添加一些解释,以便其他人可以从中学习
猜你喜欢
  • 2012-04-11
  • 2014-07-21
  • 2018-12-19
  • 2013-07-08
  • 2018-12-22
  • 1970-01-01
  • 2016-08-23
  • 2018-05-21
  • 2014-01-24
相关资源
最近更新 更多