背景:http默认端口是80,配置nignx.conf,希望服务url直接输入ip不用输入端口
给server配置80以及加default_server ,老是报错,后面发现是因为 include /etc/nginx/sites-enabled/*; 这个配置的server段占用了80
解决办法:把默认配置/etc/nginx/sites-available/default 里的server段注释掉
在 Nginx 的配置体系中,/etc/nginx/sites-available/和 /etc/nginx/sites-enabled/是两个关键目录,用于管理虚拟主机(站点)配置。它们的用途和区别如下:1. /etc/nginx/sites-available/
作用:存储 所有可用的站点配置文件(如 example.com.conf、default)。特点:这里是存放配置文件的“仓库”,文件本身不会自动生效。可以在此目录中创建、编辑或备份配置,但需手动启用才会被 Nginx 加载。示例:/etc/nginx/sites-available/
├── default # 默认站点配置
├── example.com.conf # 自定义站点配置
└── backup.conf # 备份配置(未启用)
2. /etc/nginx/sites-enabled/
作用:存储 当前已启用的站点配置(通过符号链接指向 sites-available中的文件)。特点:只有此目录中的配置才会被 Nginx 实际加载。文件通常是 sites-available中配置的 符号链接(软链接)。示例:/etc/nginx/sites-enabled/
├── default -> /etc/nginx/sites-available/default # 已启用的默认配置
└── example.com.conf -> /etc/nginx/sites-available/example.com.conf # 已启用的自定义配置
3. 两个目录的协作关系
启用站点:将 sites-available中的配置链接到 sites-enabled:sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
禁用站点:删除 sites-enabled中的符号链接(不删除原始文件):sudo rm /etc/nginx/sites-enabled/example.com.conf
查看已启用的站点:ls -l /etc/nginx/sites-enabled/
4. 为什么这样设计?
安全性:直接修改 sites-enabled可能导致误删配置。sites-available保留原始文件,方便恢复或调试。灵活性:快速启用/禁用站点(如临时关闭维护页面)。版本控制:可在 sites-available中保留多个版本的配置,按需切换。5. Nginx 如何加载这些配置?
Nginx 主配置文件(/etc/nginx/nginx.conf)中通常包含以下指令,自动加载 sites-enabled中的配置:http {include /etc/nginx/sites-enabled/*; # 加载所有已启用的站点
}
6. 最佳实践
新增站点:在 sites-available中创建配置:sudo nano /etc/nginx/sites-available/example.com.conf
创建符号链接启用:sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
测试并重载:sudo nginx -t && sudo systemctl reload nginx
禁用站点:sudo rm /etc/nginx/sites-enabled/example.com.conf
sudo systemctl reload nginx
7. 常见问题
Q1: 可以直接在 sites-enabled中编辑文件吗?
不推荐!因为它们是符号链接,直接修改会改变原始文件(sites-available中的内容)。建议始终编辑 sites-available中的文件。Q2: 如果删除了 sites-available中的文件会怎样?
sites-enabled中的符号链接将失效(变成“悬空链接”),Nginx 会报错。恢复方法:sudo cp /backup/example.com.conf /etc/nginx/sites-available/ # 从备份恢复
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
Q3: 能否自定义这两个目录的路径?
可以!需修改 Nginx 主配置文件中的 include指令路径,但一般不建议更改。总结
目录用途操作命令示例sites-available/存储所有可用配置(不自动生效)sudo nano /etc/nginx/sites-available/example.confsites-enabled/存储已启用的配置(符号链接)sudo ln -s ../sites-available/example.conf协作关系通过符号链接管理启用/禁用sudo rm /etc/nginx/sites-enabled/example.conf通过这种设计,Nginx 实现了灵活的站点管理,避免直接操作生效配置的风险。