要在单个Nginx服务器上托管多个网站,主要有以下几种实现方式:
这是最常见的方法,通过不同的域名访问不同的网站。
/etc/nginx/conf.d/
或/etc/nginx/sites-available/
目录下为每个网站创建单独的配置文件server
块,例如:# 网站1配置
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html;
# 其他配置...
}
# 网站2配置
server {
listen 80;
server_name anothersite.com www.anothersite.com;
root /var/www/anothersite.com;
index index.html;
# 其他配置...
}
创建符号链接到sites-enabled
目录(如果使用sites-available/sites-enabled结构):
ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/anothersite.com /etc/nginx/sites-enabled/
测试配置并重启Nginx:
nginx -t
systemctl restart nginx
通过不同的端口号访问不同的网站:
server {
listen 8080;
server_name example.com;
root /var/www/example.com;
# 其他配置...
}
server {
listen 8081;
server_name anothersite.com;
root /var/www/anothersite.com;
# 其他配置...
}
如果服务器有多个IP地址,可以为每个网站分配不同的IP:
server {
listen 192.168.1.1:80;
server_name example.com;
root /var/www/example.com;
# 其他配置...
}
server {
listen 192.168.1.2:80;
server_name anothersite.com;
root /var/www/anothersite.com;
# 其他配置...
}
也可以在一个主网站下通过子目录访问不同的网站:
server {
listen 80;
server_name example.com;
location /site1 {
alias /var/www/site1;
# 其他配置...
}
location /site2 {
alias /var/www/site2;
# 其他配置...
}
}
root
目录权限设置正确nginx -t
测试配置语法后再重启服务如果配置后无法访问,可以检查:
- 域名DNS解析是否正确
- 服务器防火墙是否开放了相应端口
- Nginx错误日志:/var/log/nginx/error.log
- 确保没有其他服务占用80端口
需要更详细的配置示例或有特定需求,可以告诉我您具体的场景,我会提供更针对性的解决方案。