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


73

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

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

Answers:


86

只需添加另一种方法,您就可以为托管的每个虚拟域或站点使用单独的文件。您可以将默认副本作为每个副本的起点,并为每个站点进行自定义。
然后在启用站点的站点中创建符号链接。这样,您可以通过添加或删除符号链接并发布服务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处于脱机状态。


30

如果您看一下nginx.conf,您将找到include包含sites-enabled目录中所有文件的指令。此目录存储从中指向配置文件的符号链接sites-available,以便于打开和关闭部分配置。

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

如果要托管多个网站,则应使用多个server块和/或server_name指令。官方教程在这里:服务器名称nginx如何处理请求


19

您将默认文件从可用站点链接到已启用站点。然后,修改可用站点,以包括两个服务器块,每个服务器块具有不同的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

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

server {

    server_name www.example.com

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

}


server {

    server_name www.example2.com

    location {
        proxy_pass http://localhost:4568/;
    }

}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.