Nginx 可以通过配置多个 server 块来实现多端口多域名的访问。以下是详细的配置方法:
server {
listen 80;
server_name domain1.com www.domain1.com;
root /var/www/domain1;
index index.html;
# 其他配置...
}
server {
listen 80;
server_name domain2.com www.domain2.com;
root /var/www/domain2;
index index.html;
# 其他配置...
}
server {
listen 80;
server_name example.com;
root /var/www/example-80;
index index.html;
# 其他配置...
}
server {
listen 8080;
server_name example.com;
root /var/www/example-8080;
index index.html;
# 其他配置...
}
# 域名1 - 端口80
server {
listen 80;
server_name site1.com www.site1.com;
root /var/www/site1;
index index.html index.php;
access_log /var/log/nginx/site1.access.log;
error_log /var/log/nginx/site1.error.log;
location / {
try_files $uri $uri/ =404;
}
}
# 域名1 - 端口443 (HTTPS)
server {
listen 443 ssl;
server_name site1.com www.site1.com;
ssl_certificate /etc/ssl/certs/site1.crt;
ssl_certificate_key /etc/ssl/private/site1.key;
root /var/www/site1;
index index.html index.php;
# SSL 配置...
}
# 域名2 - 端口80
server {
listen 80;
server_name site2.net www.site2.net;
root /var/www/site2;
index index.html;
access_log /var/log/nginx/site2.access.log;
error_log /var/log/nginx/site2.error.log;
}
# 域名2 - 端口8080
server {
listen 8080;
server_name site2.net www.site2.net;
root /var/www/site2-8080;
index index.html;
access_log /var/log/nginx/site2-8080.access.log;
error_log /var/log/nginx/site2-8080.error.log;
}
配置文件组织:
/etc/nginx/sites-available/
)include
指令在主配置文件中包含这些文件使用通配符和默认服务器:
server {
listen 80 default_server;
server_name _;
return 444; # 关闭连接
}
启用配置:
nginx -t
nginx -s reload
或 systemctl reload nginx
防火墙设置:
sudo ufw allow 80/tcp
, sudo ufw allow 443/tcp
, sudo ufw allow 8080/tcp
SSL配置:
端口冲突:
sudo netstat -tulnp | grep :80
域名解析问题:
ping domain.com
或 nslookup domain.com
权限问题:
chown -R www-data:www-data /var/www/domain
日志检查:
tail -f /var/log/nginx/error.log
通过以上配置,您可以灵活地为不同域名和端口设置不同的网站内容和访问规则。