Ubuntu Nginx多站点配置教程
导读:Ubuntu 上使用 Nginx 配置多个站点的完整教程 一 准备与目录结构 安装 Nginx:sudo apt update && sudo apt install nginx;启动与开机自启:sudo systemct...
Ubuntu 上使用 Nginx 配置多个站点的完整教程
一 准备与目录结构
- 安装 Nginx:sudo apt update & & sudo apt install nginx;启动与开机自启:sudo systemctl start nginx & & sudo systemctl enable nginx。完成后访问服务器 IP 应看到 Nginx 欢迎页。
- Ubuntu 的 Nginx 常用目录:主配置 /etc/nginx/nginx.conf;站点配置通常放在 /etc/nginx/sites-available/,通过软链到 /etc/nginx/sites-enabled/ 启用;也可在 /etc/nginx/conf.d/*.conf 放置站点配置。
- 创建站点目录与示例页(以两个站点为例):
sudo mkdir -p /var/www/blog.example.com/html /var/www/shop.example.com/html
sudo chown -R www-data:www-data /var/www/blog.example.com /var/www/shop.example.com
sudo chmod -R 755 /var/www
echo ‘Blog
’ | sudo tee /var/www/blog.example.com/html/index.html
echo ‘Shop
’ | sudo tee /var/www/shop.example.com/html/index.html
以上步骤完成后,基础环境与目录结构就绪。
二 配置多个站点
- 方式一 基于域名的虚拟主机(推荐)
在 /etc/nginx/sites-available/ 创建配置文件,例如 blog.example.com:
sudo tee /etc/nginx/sites-available/blog.example.com < < ‘EOF’
server {
listen 80;
server_name blog.example.com www.blog.example.com;
root /var/www/blog.example.com/html;
index index.html;
access_log /var/log/nginx/blog.access.log combined;
error_log /var/log/nginx/blog.error.log warn;
location / {
try_files $uri $uri/ =404;
}
}
EOF
同理创建 shop.example.com。启用站点:
sudo ln -s /etc/nginx/sites-available/blog.example.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/shop.example.com /etc/nginx/sites-enabled/
如需默认兜底(关闭未匹配请求):
sudo tee /etc/nginx/sites-available/default < < ‘EOF’
server {
listen 80 default_server;
server_name _;
return 444;
}
EOF
sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/ - 方式二 基于路径的同一域名多站点
在同一 server 中用 location 区分:
server {
listen 80;
server_name yourdomain.com;
location /site1 {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
rewrite ^/site1(.)$ $1 break;
}
location /site2 {
proxy_pass http://127.0.0.1:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
rewrite ^/site2(.)$ $1 break;
}
} - 方式三 使用 conf.d 目录
在 /etc/nginx/conf.d/ 下新建 site1.conf、site2.conf,内容与上方 server 块一致(扩展名需为 .conf)。
以上三种方式可并存,按你的目录规范与运维习惯选择其一或混合使用。
三 启用 HTTPS 与 HTTP 跳转
- 为站点配置 SSL(以 blog.example.com 为例):
sudo mkdir -p /etc/nginx/ssl将证书与私钥放置于 /etc/nginx/ssl/,例如:blog.example.com.crt 与 blog.example.com.key
编辑站点配置,新增 443 端口与证书路径:
server {
listen 443 ssl http2;
server_name blog.example.com www.blog.example.com;
root /var/www/blog.example.com/html;
index index.html;
ssl_certificate /etc/nginx/ssl/blog.example.com.crt;
ssl_certificate_key /etc/nginx/ssl/blog.example.com.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / { try_files $uri $uri/ =404; }
} - HTTP 自动跳转 HTTPS:
server {
listen 80;
server_name blog.example.com www.blog.example.com;
return 301 https://$server_name$request_uri;
} - 证书获取建议:可使用 Let’s Encrypt 等免费 CA 自动化签发与续期(配合 certbot 等工具)。
完成后执行语法检查并重新加载 Nginx 使配置生效。
四 检查生效与常见问题
- 语法检查与重载:sudo nginx -t & & sudo systemctl reload nginx(或 sudo systemctl restart nginx)。
- 服务与端口:确认 Nginx 运行(sudo systemctl status nginx),检查 80/443 是否被占用(ss -tulpen | grep ‘:80|:443’)。
- 域名解析:在域名注册商将 A/AAAA 记录指向服务器公网 IP,可用 nslookup/dig 验证解析是否生效。
- 反向代理连通性:确保后端服务(如 127.0.0.1:8080)已启动且防火墙放行。
- 日志排错:查看站点错误日志(如 /var/log/nginx/blog.error.log)与访问日志(如 /var/log/nginx/blog.access.log)。
以上步骤可快速定位大多数配置与网络问题。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Nginx多站点配置教程
本文地址: https://pptw.com/jishu/778526.html
