基于端口的虚拟主机配置允许你在同一IP地址上通过不同端口提供不同的网站内容。以下是详细的配置方法:
编辑Nginx配置文件(通常在 /etc/nginx/nginx.conf
或 /etc/nginx/sites-available/
目录下)
为每个端口创建server块:
server {
listen 8080; # 第一个端口
server_name example.com;
root /var/www/example1;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
server {
listen 8081; # 第二个端口
server_name example.com;
root /var/www/example2;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
# 第一个虚拟主机 - 端口8080
server {
listen 8080;
server_name mydomain.com;
access_log /var/log/nginx/port8080.access.log;
error_log /var/log/nginx/port8080.error.log;
root /var/www/port8080;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
# 第二个虚拟主机 - 端口8081
server {
listen 8081;
server_name mydomain.com;
access_log /var/log/nginx/port8081.access.log;
error_log /var/log/nginx/port8081.error.log;
root /var/www/port8081;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
server {
listen 8443 ssl;
server_name secure.example.com;
ssl_certificate /etc/ssl/certs/example.crt;
ssl_certificate_key /etc/ssl/private/example.key;
root /var/www/secure-site;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
防火墙设置:确保防火墙允许访问配置的端口
sudo ufw allow 8080
sudo ufw allow 8081
SELinux:如果使用SELinux,可能需要调整策略
sudo semanage port -a -t http_port_t -p tcp 8080
sudo semanage port -a -t http_port_t -p tcp 8081
测试配置:
sudo nginx -t
重启Nginx:
sudo systemctl restart nginx
端口冲突:确保端口未被其他服务占用
sudo netstat -tulnp | grep :8080
权限问题:确保Nginx用户有权限访问网站目录
sudo chown -R www-data:www-data /var/www/port8080
sudo chmod -R 755 /var/www/port8080
日志问题:如果日志文件未创建,手动创建并设置权限
sudo touch /var/log/nginx/port8080.{access,error}.log
sudo chown www-data:www-data /var/log/nginx/port8080.*.log
通过以上配置,你可以轻松实现基于端口的虚拟主机功能,在同一服务器上通过不同端口提供不同的网站内容。