在 Ubuntu 和 Windows 系统中,Nginx 的
核心配置逻辑完全一致(比如 HTTP 块、Server 块、Location 块的语法规则),但默认配置文件的 结构和内容组织存在差异,这也是你在 Ubuntu 中可能没直观找到
nginx.conf
块的主要原因 ——Ubuntu 下的 Nginx 为了更灵活地管理多站点,将
Server
块拆分到了独立文件中,而非直接写在主配置
Server
里。
nginx.conf
一、核心差异:
Server
块的存放位置不同
Server
无论是 Ubuntu 还是 Windows,
块都是 Nginx 配置虚拟主机(站点)的核心,但系统默认的配置拆分方式不同:
Server
对比维度 | Ubuntu 系统(Nginx 官方 / APT 安装) | Windows 系统(Nginx 压缩包安装) |
---|---|---|
主配置文件 | (主配置,不直接包含 块) |
(主配置,默认包含 1 个 块) |
块位置 |
拆分到独立文件: (站点配置文件,含 块) (已启用站点的软链接) |
直接写在 的 块内(默认有一个监听 80 端口的 块) |
配置拆分逻辑 | 遵循 Linux 软件 “模块化管理” 习惯,多站点时只需在 新增文件,再软链接到 即可启用,无需修改主配置 |
单文件管理,多站点时需在 的 块内新增多个 块,或通过 引入外部文件 |
二、Ubuntu 中如何找到 / 修改
Server
块配置?
Server
如果你在 Ubuntu 的
里没看到
/etc/nginx/nginx.conf
块,是因为主配置通过
Server
指令引入了外部的站点配置文件,具体步骤如下:
include
1. 查看主配置的
include
指令
include
打开 Ubuntu 的主配置文件:
bash
sudo nano /etc/nginx/nginx.conf
在
块的末尾,会看到类似这样的配置(核心是引入
http
目录下的所有文件):
sites-enabled
nginx
http {
# 其他配置(如日志、连接数、MIME类型等)...
# 引入已启用的站点配置(这里包含了所有 Server 块)
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
这意味着:Ubuntu 的
块不写在主配置里,而是放在
Server
目录下的文件中(
sites-enabled
里的文件是
sites-enabled
目录的软链接,用于控制站点是否启用)。
sites-available
2. 查看默认的
Server
块配置
Server
Ubuntu 安装 Nginx 后,默认会创建一个示例站点配置文件,路径为:
bash
# 查看可用站点的配置(含 Server 块)
cat /etc/nginx/sites-available/default
打开后能看到完整的
块,例如默认监听 80 端口的配置:
Server
nginx
server {
listen 80 default_server; # 监听 80 端口,设为默认站点
listen [::]:80 default_server;
root /var/www/html; # 静态文件根目录(默认放 index.html 的地方)
index index.html index.htm index.nginx-debian.html;
server_name _; # 匹配所有未指定 server_name 的请求
location / {
# 访问根路径时的处理逻辑(默认尝试找 index 文件,找不到则 404)
try_files $uri $uri/ =404;
}
}
3. 如何修改
Server
块?
Server
如果需要修改站点配置(比如改端口、根目录、反向代理),直接编辑
下的文件即可:
sites-available
编辑默认站点配置:
bash
sudo nano /etc/nginx/sites-available/default
修改
块内容(例如添加反向代理,参考你之前的登录接口问题):
Server
nginx
server {
listen 80; # 保持监听 80 端口
server_name 192.168.1.190; # 明确指定站点的 IP/域名
# 静态文件根目录(前端文件放在这里)
root /var/www/your-frontend; # 替换为你的前端项目路径
index index.html;
# 反向代理:将 /blzk-stage-api 开头的请求转发到后端
location /blzk-stage-api/ {
proxy_pass http://127.0.0.1:8080/; # 替换为你的后端服务地址
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# 处理前端单页应用(如 Vue/React,避免刷新 404)
location / {
try_files $uri $uri/ /index.html;
}
}
验证配置语法是否正确:
bash
sudo nginx -t
重启 Nginx 使配置生效:
bash
sudo systemctl restart nginx
三、总结:Ubuntu 与 Windows 配置的核心一致性
虽然
块的存放位置不同,但 配置语法、指令含义完全相同,例如:
Server
监听端口的
指令;匹配域名的
listen
指令;处理请求的
server_name
块;反向代理的
location
指令等。
proxy_pass
你在 Windows 中写的
块配置,只要调整好路径(比如 Ubuntu 静态文件路径是
Server
,Windows 是
/var/www/
),直接复制到 Ubuntu 的
C:/nginx/html/
中就能使用,无需修改语法。
/etc/nginx/sites-available/default
暂无评论内容