服务器测评网
我们一直在努力

nginx 如何通过配置获得域名对应的访问地址?

理解域名与Nginx的关系

在互联网架构中,域名是用户访问服务的入口,而Nginx作为高性能的Web服务器和反向代理服务器,负责将域名请求正确地映射到对应的资源或服务,要让Nginx识别并处理特定域名的请求,需要完成从DNS配置到Nginx服务器配置的一系列步骤,这一过程的核心目标是确保当用户在浏览器中输入域名时,Nginx能够接收请求并根据预设规则返回正确的响应,可能是静态网页、动态应用内容或代理到后端服务。

nginx 如何通过配置获得域名对应的访问地址?

DNS配置:域名的“导航系统”

Nginx能够处理域名请求的前提是,域名已经通过DNS(域名系统)解析到服务器的IP地址,DNS配置是整个流程的基础,相当于为域名设置了一个“导航地址”,告诉用户的浏览器应该向哪个IP发起请求。

获取域名与服务器IP

首先需要拥有一个注册的域名(例如example.com)和一台具有公网IP地址的服务器,如果尚未注册域名,可通过阿里云、腾讯云、GoDaddy等域名注册商购买;服务器IP可通过云服务商控制台或命令行工具(如ifconfigip addr)查看。

配置DNS记录

登录域名注册商的管理后台,找到DNS解析设置,添加A记录或CNAME记录:

  • A记录:将域名直接指向服务器的公网IP,格式为主机记录@(根域名)或www(子域名),记录类型选择A,记录值为服务器IP,将example.comwww.example.com均解析到168.1.1
  • CNAME记录:将子域名指向另一个域名,适用于需要隐藏真实IP的场景,例如将blog.example.com指向example.com

配置完成后,DNS解析可能需要几分钟到几小时生效(取决于TTL设置),可通过pingnslookup命令验证域名是否正确解析到服务器IP。

Nginx服务器配置:让域名“落地”

当DNS解析生效后,用户的请求会发送到服务器的IP,此时Nginx需要根据配置文件识别不同的域名,并执行相应的处理逻辑,Nginx通过server块(虚拟主机配置)实现多域名区分,每个server块对应一个或多个域名。

定位Nginx配置文件

Nginx的主配置文件通常位于/etc/nginx/nginx.conf,但虚拟主机配置一般存放在/etc/nginx/sites-available//etc/nginx/conf.d/目录下(不同Linux发行版路径可能略有差异),推荐在sites-available目录下创建独立的配置文件,然后通过软链接到sites-enabled目录启用(Ubuntu/Debian系统常用此方式)。

nginx 如何通过配置获得域名对应的访问地址?

创建虚拟主机配置文件

example.com为例,创建配置文件/etc/nginx/sites-available/example.com如下:

server {
    listen 80;          # 监听HTTP默认端口80
    server_name example.com www.example.com;  # 绑定域名,多个域名用空格分隔
    root /var/www/example.com;  # 网站根目录,存放网站文件
    index index.html index.htm;  # 默认首页文件
    # 访问日志配置(可选)
    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;
    location / {  # 根路径配置
        try_files $uri $uri/ =404;  # 依次尝试访问文件、目录,否则返回404
    }
    # 其他配置(如重定向、反向代理等)
}

关键参数说明:

  • listen:指定Nginx监听的端口,80为HTTP,443为HTTPS(需配置SSL证书)。
  • server_name:必须与DNS解析的域名完全一致,支持通配符(如*.example.com)或正则表达式(如~^example\.com$)。
  • root:网站文件的存放路径,需确保Nginx进程对该目录有读取权限(通常设置www-data用户为所有者)。

启用配置并测试

创建配置文件后,需启用并重载Nginx:

  • Ubuntu/Debian:sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
  • CentOS/RHEL:直接将配置文件放入/etc/nginx/conf.d/目录,文件名以.confexample.com.conf

执行sudo nginx -t检查配置语法是否正确,若无错误则重载Nginx:sudo systemctl reload nginx,通过浏览器访问example.com,应能看到/var/www/example.com下的网站内容。

HTTPS配置:加密传输保障安全

现代网站普遍采用HTTPS协议,通过SSL/TLS证书加密数据传输,提升安全性和用户信任度,Nginx支持Let’s Encrypt免费证书,可通过Certbot工具自动申请和配置。

安装Certbot

# Ubuntu/Debian
sudo apt update
sudo apt install certbot python3-certbot-nginx
# CentOS/RHEL
sudo yum install epel-release
sudo yum install certbot python3-certbot-nginx

申请SSL证书

sudo certbot --nginx -d example.com -d www.example.com

Certbot会自动检测Nginx配置中的域名,申请证书并修改Nginx配置,添加443端口监听和SSL相关参数,完成后,server块会新增如下配置:

nginx 如何通过配置获得域名对应的访问地址?

listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;

强制HTTP跳转HTTPS(可选)

为确保所有访问都通过HTTPS,可在HTTP的server块中添加重定向规则:

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;  # 永久重定向到HTTPS
}

重载Nginx后,访问HTTP域名会自动跳转至HTTPS。

多域名与子域名配置

若需在同一台服务器上托管多个网站(如example.comblog.example.com),只需重复上述“创建虚拟主机配置文件”的步骤,为每个域名创建独立的server块,并设置不同的root目录即可。

示例:配置子域名blog.example.com

server {
    listen 80;
    server_name blog.example.com;
    root /var/www/blog.example.com;
    index index.html;
    location / {
        try_files $uri $uri/ =404;
    }
}

确保/var/www/blog.example.com目录存在且权限正确,重载Nginx后即可通过子域名访问独立网站。

常见问题排查

域名无法访问

  • 检查DNS解析是否生效:nslookup example.com确认IP正确。
  • 检查服务器防火墙:确保80、443端口已开放(如sudo ufw allow 80,443/tcp)。
  • 检查Nginx错误日志:tail -f /var/log/nginx/error.log定位问题(如权限不足、配置语法错误)。

访问域名显示默认页面

  • 检查server_name是否与域名完全一致(包括www子域名)。
  • 检查root路径是否正确,文件是否存在。
  • 检查Nginx是否绑定了正确的server块:sudo nginx -T查看完整配置,确认域名对应的server块未被其他配置覆盖。

HTTPS证书报错

  • 确保证书未过期:sudo certbot certificates查看证书状态。
  • 若证书过期,执行sudo certbot renew --dry-run测试自动续期,然后sudo certbot renew正式续期。

通过DNS配置将域名指向服务器IP,再在Nginx中创建虚拟主机绑定域名,并可选配置HTTPS加密,即可完成Nginx对域名的识别与处理,这一过程涉及网络基础、服务器配置和安全实践,需逐步验证每个环节的正确性,掌握这些操作后,不仅能搭建个人网站,还能为企业级应用提供灵活、高效的多域名托管服务。

赞(0)
未经允许不得转载:好主机测评网 » nginx 如何通过配置获得域名对应的访问地址?