nginx 和站点上的多个网站可用

Posted

技术标签:

【中文标题】nginx 和站点上的多个网站可用【英文标题】:multiple websites on nginx & sites-available 【发布时间】:2012-07-26 10:43:16 【问题描述】:

使用 nginx 的基本安装,您的 sites-available 文件夹只有一个文件:default

sites-available 文件夹如何工作以及如何使用它来托管多个(单独的)网站?

【问题讨论】:

【参考方案1】:

如果您查看nginx.conf,您会发现include 指令包含sites-enabled 目录中的所有文件。此目录存储来自sites-available 的配置文件的符号链接,以便于打开和关闭部分配置。

如您所见,这些目录并没有什么神奇之处。

如果您想托管多个网站,您应该使用多个 server 块和/或 server_name 指令。官方教程在这里:Server names和How nginx processes a request。

【讨论】:

【参考方案2】:

只是添加另一种方法,您可以为您托管的每个虚拟域或站点使用单独的文件。 您可以使用默认副本作为每个副本的起点,并为每个站点进行自定义。 然后在启用站点中创建符号链接。通过这种方式,您可以通过添加或删除符号链接并发出服务 nginx 重新加载来启动和关闭站点。

您可以在进行站点维护时发挥创意并使用此方法将站点重定向到维护模式页面。

所以结构看起来像这样:

/sites-available/ (you can use obvious file names like this)
| 
|-> a.mysite.com
|-> b.mysite.com
|-> someOtherSite.com

/sites-enabled/ (these are just symlinks to the real files in /sites-available)
| 
|-> a.mysite.com
|-> b.mysite.com

请注意,由于只有前两个条目是 sites-enabled 中唯一的符号链接项,因此第三个条目 someOtherSite.com 处于脱机状态。

【讨论】:

【参考方案3】:

您将默认文件从可用站点符号链接到已启用站点。然后修改可用站点以包含两个服务器块,每个块具有不同的 server_name。见下文。这假设您必须拥有名为 example.com 和 example2.com 的域。您还可以将@records 指向您安装了nginx 的服务器的IP 地址。

将可用站点符号链接到启用的站点

sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default

使用您选择的编辑器编辑文件(对我来说是 vim)

sudo vi /etc/nginx/sites-available/default

这是工作 nginx conf 的内容,假设您在端口 4567 和 4568 上运行 Web 应用程序。

server 

    server_name www.example.com

    location / 
        proxy_pass http://localhost:4567/;
    




server 

    server_name www.example2.com

    location 
        proxy_pass http://localhost:4568/;
    


【讨论】:

以上是关于nginx 和站点上的多个网站可用的主要内容,如果未能解决你的问题,请参考以下文章

通过 Gunicorn/Nginx 使用 Django 的站点框架运行多个站点

nginx_include发布多个web站点

nginx怎么配置多个web

分端口部署web项目

一台 IIS 服务器上的多个网站

详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点