在 Nginx 服务器上创建虚拟主机

Create Virtual Host on Nginx Server

最近我一直在使用 LAMP,但是现在,我开始使用 nginx。所以,我安装了nginx,想创建虚拟主机,由于LAMP的文件夹结构与独立的nginx文件夹结构不同,无法理解如何创建虚拟主机。

我访问过几个链接,例如:

  1. Tutorial 1, Tutorial 2 - 没有用,因为它用于独立的 nginx

1 Question on SO,也是和我的情况有点相似,但是没有回答

默认 nginx 配置包含这些行以检查启用站点的目录:

http {
    # ...

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

我认为您可以编辑 bitnami 在 /opt/bitnami/nginx/conf/nginx.conf 提供的配置以添加这些路径(或任何其他路径)并按照通常的教程进行操作。

在您的项目目录中定义一个文件,例如vhost.conf 编写以下代码:

server {

    listen    8080;
    root   "your_project_directory";
    server_name  your_host_name;

    index index.php;
    allow 127.0.0.1;
    deny all;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_read_timeout 300;
        fastcgi_pass unix:/**your_bitnami_install_directory**/php/var/run/www.sock;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME $request_filename;
        include fastcgi_params;
    }

}

将此文件包含在:your_bitnami_install_directory/nginx/conf/bitnami/bitnami-apps-vhosts.conf

include "your_project_directory/vhost.conf";

重启nginx

Apache Virtual Host [/etc/apache2/sites-available/000-default.conf]

<VirtualHost *:8080>
  ServerName abc.dev
  DocumentRoot "/home/gauravdave01/Development/project001/source/public"
    <Directory /home/gauravdave01/Development/project001/source/public>
        DirectoryIndex index.php
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:8080>
  ServerName mno.dev
  DocumentRoot "/home/gauravdave01/Development/project002/source/public"
    <Directory /home/gauravdave01/Development/project002/source/public>
        DirectoryIndex index.php
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Nginx Virtual Host [/etc/nginx/sites-available/default]

server {
    listen 80 default_server;

    root /usr/share/nginx/example.com;
    index index.php index.html index.htm;

    server_name example.com www.example.com;
    location / {
        try_files $uri $uri/ /index.php;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        include snippets/fastcgi-php.conf;
    }
}

server {
    root /home/gauravdave01/Development/sample.org;
    index index.php index.html index.htm;

    server_name sample.org www.sample.org;
    location / {
        try_files $uri $uri/ /index.php;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        include snippets/fastcgi-php.conf;
    }
}

更新所有站点信息后,您需要使用 sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/ 创建一个符号 link 到 sites-enabled 然后,重新加载您的 nginx 使用: sudo service nginx restart

不要忘记在主机 [/etc/hosts] 文件中添加新创建的站点地址。

如果您在尝试执行 .php 文件时遇到 "File Not Found." 错误,则意味着您需要更改 php 的用户和组- fpm [/etc/php/7.0/fpm/pool.d/www.conf]文件到你当前用户,然后重启php-fpm使用:sudo /etc/init.d/php7.0-fpm restart

File References:

  • Nginx 配置: /etc/nginx/nginx.conf
  • Nginx 错误日志: /var/log/nginx/error.log