server
块,指定监听端口、什么是虚拟主机(Vhost)
虚拟主机允许在同一台服务器上运行多个网站,每个网站拥有独立的配置和资源,通过区分请求的域名或端口,Nginx 可以将流量路由到对应的网站根目录。
创建虚拟主机的步骤
安装 Nginx
如果尚未安装 Nginx,可以通过以下命令安装:
# 对于 Debian/Ubuntu 系统 sudo apt update sudo apt install nginx # 对于 CentOS/RHEL 系统 sudo yum install epel-release sudo yum install nginx
配置虚拟主机
在 Nginx 中,虚拟主机的配置分为两种类型:
- 基于域名的虚拟主机(更常见)
- 基于端口的虚拟主机
示例 1:基于域名的虚拟主机
假设需要为 example.com
和 test.com
创建两个虚拟主机。
-
创建网站目录
sudo mkdir -p /var/www/example.com/html sudo mkdir -p /var/www/test.com/html sudo chmod -R 755 /var/www
-
创建测试页面
echo "<h1>Welcome to example.com!</h1>" > /var/www/example.com/html/index.html echo "<h1>Welcome to test.com!</h1>" > /var/www/test.com/html/index.html
-
编辑 Nginx 配置文件
打开 Nginx 的主配置文件:sudo nano /etc/nginx/nginx.conf
确保包含以下行(通常已存在):
http { include /etc/nginx/conf.d/.conf; ... }
-
创建虚拟主机配置文件
在/etc/nginx/conf.d/
目录下创建example.com.conf
和test.com.conf
:/etc/nginx/conf.d/example.com.conf
server { listen 80; server_name example.com www.example.com; root /var/www/example.com/html; index index.html; location / { try_files $uri $uri/ =404; } }
/etc/nginx/conf.d/test.com.conf
server { listen 80; server_name test.com www.test.com; root /var/www/test.com/html; index index.html; location / { try_files $uri $uri/ =404; } }
-
测试配置并重启 Nginx
sudo nginx -t # 测试配置是否正确 sudo systemctl restart nginx # 重启 Nginx
示例 2:基于端口的虚拟主机
如果需要在同一域名下通过不同端口访问不同网站:
-
创建网站目录和测试页面
sudo mkdir -p /var/www/port8080/html sudo mkdir -p /var/www/port8081/html echo "<h1>Welcome to Port 8080!</h1>" > /var/www/port8080/html/index.html echo "<h1>Welcome to Port 8081!</h1>" > /var/www/port8081/html/index.html
-
创建虚拟主机配置文件
/etc/nginx/conf.d/port8080.conf
server { listen 8080; server_name localhost; root /var/www/port8080/html; index index.html; location / { try_files $uri $uri/ =404; } }
/etc/nginx/conf.d/port8081.conf
server { listen 8081; server_name localhost; root /var/www/port8081/html; index index.html; location / { try_files $uri $uri/ =404; } }
-
测试配置并重启 Nginx
sudo nginx -t sudo systemctl restart nginx
SSL 证书配置(可选)
为虚拟主机启用 HTTPS:
-
安装 Certbot
sudo apt install certbot python3-certbot-nginx # Debian/Ubuntu sudo yum install certbot python3-certbot-nginx # CentOS/RHEL
-
申请 SSL 证书
sudo certbot --nginx -d example.com -d www.example.com
按提示完成操作,Certbot 会自动修改 Nginx 配置。
-
自动续期
Certbot 会创建定时任务自动续期证书。
常见问题与解答
问题 1:如何修改虚拟主机的根目录?
解答:在虚拟主机配置文件中,修改 root
指令指向的路径。
root /var/www/new_path/html;
修改后测试配置并重启 Nginx:
sudo nginx -t sudo systemctl restart nginx
问题 2:如何强制重定向 HTTP 到 HTTPS?
解答:在虚拟主机配置中添加重定向规则。
server { listen 80; server_name example.com www.example.com; return 301 https://$host$request_uri; # 强制跳转到 HTTPS }
保存后测试配置并重启 Nginx。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/128326.html