Nginx配置多个目录网站

例如将一个网站放在/home/pi/www/html,另一个放在/home/pi/www/blog中,第一个目录是我的Nginx默认路径因此不用配置,咱来配置第二个,并且假如第二个我有域名xx.com

  • 在Nginx配置目录下,创建一个”vhost”目录。本例假设Nginx是默认安装,配置目录在”/etc/nginx”
$ sudo mkdir /etc/nginx/vhost
  • 创建siteA的配置文件
$ sudo vi /etc/nginx/vhost/vhost_siteA.conf

输入以下配置信息

server {
    listen       80;                        # 监听端口
    server_name xx.com www.xx.com;    # 站点域名
    root  /home/pi/www/blog;              # 站点根目录
    index index.html index.htm index.php;   # 默认导航页
 
    location / {
        # WordPress固定链接URL重写 一般网站不需要 根据实际情况去留
        if (!-e $request_filename) {
            rewrite (.*) /index.php;
        }
    }
 
    # PHP配置 sock路径根据实际安装而定
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.3-fpm.sock;
    }
}
  • 打开nginx.conf文件
sudo vi /etc/nginx/nginx.conf
  • 将虚拟目录的配置文件加入到”http {}”部分的末尾
http {
    ...
    include /etc/nginx/vhost/*.conf;
}
  • 重启Nginx服务
$ sudo service nginx restart
  • 现在访问localhost和xx.com,你将发现浏览器会打开不同的站点
  • 当然如果你想继续添加网站目录,域名为yy,那同上继续同siteA一样创建siteB的配置文件,两者仅有的不同是”server_name”和”root”目录
$ sudo vi /etc/nginx/vhost/vhost_siteB.conf

配置内容如下简写,由于nginx.conf里用通配符匹配配置目录下所有配置文件,因此不用配置nginx.conf,只需要重启下nginx即可,然后访问yy.com你将又打开另个网站

server {
    ...
    server_name www.yy.com yy.com;    # 站点域名
    root  /home/pi/www/forum;             # 站点根目录
    ...
}

禁止访问小技巧

假如你的Nginx根目录设在”/home/user/www”,你想阻止别人通过”http://IP地址/blog”或”http://IP地址/forum”来访问你的站点,最简单的方法就是禁止IP地址访问。方法如下:

  1. 打开Nginx网站默认配置文件,记得先备份
$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default_bak
$ sudo vi /etc/nginx/sites-available/default
  1. 将所有内容删除,只留以下配置
server {
    listen 80 default_server;
    server_name _;
    return 404;
}
  1. 重启Nginx后,别人将无法通过IP地址访问网站了

如果你不想禁止IP地址访问整个目录,只是要防止别人通过IP访问你的博客和论坛。那就需要禁止”/blog”和”/forum”的目录访问。

  1. 打开Nginx网站默认配置文件,同上面一样,记得先备份

  2. 在”server { }”部分加上以下配置

location ^~ /blog/ {
    deny all;
}
location ^~ /forum/ {
    deny all;
}
  1. 重启Nginx即可

来源参考:https://www.cnblogs.com/Erick-L/p/7066564.html