当前位置:首页 > 虚拟主机 > 正文

设置ngxin服务器虚拟主机

Nginx服务器,添加虚拟主机指向指定目录与域名即可完成设置

前期准备

安装必要软件包

确保系统已更新至最新状态,执行以下命令安装nginx及相关依赖:

sudo apt update          # Debian/Ubuntu系适用(如Ubuntu Server)
sudo yum install epel-release && sudo yum install nginx      # CentOS/RHEL系适用

注:若使用旧版系统,可能需要添加第三方源或调整包管理工具。

确认配置文件路径

不同Linux发行版的默认配置位置略有差异:
| 发行版类型 | 主配置文件路径 | 站点启用目录 | 站点停用目录 |
|——————|——————————|———————–|———————–|
| Debian/Ubuntu | /etc/nginx/nginx.conf | /etc/nginx/sites-enabled/ | /etc/nginx/sites-available/ |
| CentOS/RHEL | /etc/nginx/nginx.conf | /etc/nginx/conf.d/ | 无独立停用目录 |


创建虚拟主机步骤详解

编写站点配置文件

在对应目录下新建一个以域名命名的文件(例如example.com.conf示例如下:

server {
    listen 80;                         # 监听端口(可改为443实现HTTPS)
    server_name example.com www.example.com;  # 绑定的域名列表
    root /var/www/html/example;         # 网站根目录路径
    index index.html index.php;         # 默认首页文件优先级
    location / {
        #try_files $uri $uri/ =404;      # 可选:优化URL重写规则
        proxy_pass http://localhost:8080; # 若需反向代理后端服务时启用此行
    }
    error_page 500 502 503 504 /50x.html; # 错误页面统一处理方案
}

关键参数说明:

  • listen支持多端口绑定(如listen 8080;)或IPv6地址(listen [::]:80;);
  • root必须具有读权限且归属正确的用户组;
  • 生产环境建议关闭调试日志输出(删除或注释掉access_log off;外的多余日志指令)。

建立符号链接激活配置

对于Debian/Ubuntu系统:

sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/

CentOS/RHEL可直接将文件放入conf.d目录自动加载。

验证并重启服务

检查语法正确性:

sudo nginx -t -c /etc/nginx/nginx.conf      # 指定主配置文件路径进行校验

若无报错,重新加载配置:

设置ngxin服务器虚拟主机  第1张

sudo systemctl reload nginx                # Systemd系统推荐方式
# 或旧版init脚本用法:sudo service nginx restart

高级配置扩展(按需选择)

功能需求 实现方法 注意事项
HTTPS加密 申请Let’s Encrypt证书后添加ssl_certificate等指令 需开放443端口防火墙规则
FastCGI支持PHP location ~ .php$块中使用fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; 确保PHP-FPM服务正在运行
负载均衡 通过upstream模块定义后端服务器 健康检查机制需额外配置
访问控制 利用allow/deny指令限制IP段访问 顺序敏感!先允许后拒绝会失效

常见问题与解答

Q1:新添加的虚拟主机无法访问怎么办?
A:①检查防火墙是否放行对应端口(如ufw allow 80/tcp);②确认域名解析已指向服务器公网IP;③查看Nginx错误日志(tail -f /var/log/nginx/error.log),典型错误包括路径拼写错误、权限不足或SELinux拦截。

Q2:如何让同一个IP下的多个域名共用同一套代码?
A:在server_name中列出所有别名(如server_name site1.com site2.net;),并保持其他配置一致即可实现多域名映射到同一目录,若需差异化处理,可通过`if ($host = “specific.domain”) { …

0