例如将一个网站放在 /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 地址访问。方法如下:
- 打开 Nginx 网站默认配置文件,记得先备份
$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default_bak
$ sudo vi /etc/nginx/sites-available/default
- 将所有内容删除,只留以下配置
server {
listen 80 default_server;
server_name _;
return 404;
}
- 重启 Nginx 后,别人将无法通过 IP 地址访问网站了
如果你不想禁止 IP 地址访问整个目录,只是要防止别人通过 IP 访问你的博客和论坛。那就需要禁止”/blog”和”/forum”的目录访问。
-
打开 Nginx 网站默认配置文件,同上面一样,记得先备份
-
在”server {}”部分加上以下配置
location ^~ /blog/ {deny all;}
location ^~ /forum/ {deny all;}
- 重启 Nginx 即可
来源参考:https://www.cnblogs.com/Erick-L/p/7066564.html