nginx配置二级域名(多级域名)

本文介绍了如何配置Nginx以设置二级和多级域名,包括单文件和多文件配置方法,并分享了配置过程中遇到的问题及解决经验。通过在/etc/nginx/conf.d/目录下创建新的配置文件并重启Nginx来实现二级域名设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

nginx配置二级域名(多级域名)

起因

之前在v2看到毒鸡汤,很是喜欢,想着也部署到我的博客上来,域名就用二级域名dujitang.flywill.cn,由于我的服务器是Nginx,于是就有了这篇配置二级域名的文章。

过程

先谷歌了一下,得到的结果

单文件配置

#运行用户,默认为nginx,一般这里不用设置
#user nginx;

#进程数,设置为自己cup核心数一致即可
worker_processes 1;

#错误日志,下面还有notice和info两个,这里不需配置也行
#error_log;

#nginx运行时存放的进程ID号,无需配置
#pid  logs/nginx.pid;

#工作模式以及连接上限
events {
    #epoll是多路复用IO(I/O Multiplexing)中的一种方式
    #注意!仅适用于linux2.6以上内核,可以提高nginx的性能
    #use epoll
    
    #最大并发链接数(一直说的高并发、高并发,说的就是这里了)
    worker_connections  1024;
}

#http这里不做详细介绍,只说我们要用到的部分
http {
    server {
        #监听的端口,一般都是80端口,大家别鬼畜的一定要【我们不一样】就好了
        listen       80;

        #服务器的Ip地址(域名)
        #注意!下面的localhost这里就是我们的域名要放置的位置了!
        server_name  localhost;

        #不管你配不配,这里【有一个】是必须加上去的,就是index.php
        location / {
            
            #这里必须和下面的root地址保持一致
            root   /home/web/wechat;

            #这里原本是没有【inde.php】的,给它配上去!配!呸!
            index  index.html index.htm index.php;
        }

        #这一块就是我们需要配置,让nginx接收到以.php结尾的文件,就用php-fpm来运行
        location ~ \.php$ {
            #这里必须和上面的root地址保持一致
            root      /home/web/wechat;

            #这里就是本机的访问地址和端口了,默认不需要修改啊
            fastcgi_pass   127.0.0.1:9000;

            #设置动态首页为index.php
            fastcgi_index  index.php;

            #这一步很重要啊!
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            
            #重要!这一步就是告诉nginx,执行到这里的时候你就要让php小弟跑一下了
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

        #ok! perfect,一个server配置好了,那怎么配置第二个呢?
        #简单的很!你把上面的复制一份,把域名改成相应的二级域名就可以了
        #二级域名怎么配?下节再说了,好累的,打字
        server{
            #你就在这里写配置内容吧,尽情蹂躏!唯一一点不同!
            server_name  http:#www.jiandanmeng.cn/; #这里
        }
 }

这里用的是单文件配置的,很明显,这样不优雅。

多文件配置

我使用的是多文件配置,先看下配置文件

cd /etc/nginx

vim nginx.conf

在http结构中include /etc/nginx/conf.d/*.conf;``已经引入了该文件夹下所有以``.conf``文件结尾的文件

http {
    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

所以你要做的就是在该目录下建立新的二级域名的配置文件

server {
    listen 80;                              #监听端口
    server_name dujitang.flywill.cn;               #绑定域名
    root /var/www/html/dujitang/;       #网站根目录,建议使用绝对路径
    index index.php index.html index.htm;   #默认文件
    # rewrite ^(.*)$  https://$host$1 permanent; #用于将http页面重定向到https页面

    location / {
        root   /var/www/html/dujitang/;
        index  index.html index.htm index.php;
    }

    #添加错误页面,利于搜索引擎收录以及良好的用户体验
    error_page 404 /404.html;
    location /404.html {
        root /usr/local/nginx/html/;
    }

    error_page 500 502 503 504 /50x.html;
    location =/50x.html {
        root /usr/local/nginx/html/;
    }
}

然后重启nginx就搞定了。

systemctl restart nginx.service

踩坑

新的配置文件只需要有server级就行了,其他诸如http、event在主配置文件中写就可以了。

具体可以点击这里查看。

欢迎转载,转载请注明出处!
独立域名博客:flywill.cn
欢迎关注公众微信号:Java小镇V
分享自己的学习 & 学习资料 & 生活
想要交流的朋友也可以加微信号备注入群:EscUpDn

### Nginx 配置域名解析的方法 Nginx 支持多种方式完成域名解析,主要分为静态解析和动态解析两种模式。 #### 1. 静态解析 当使用 `server_name` 指定特定域名时,Nginx 默认会在启动时解析该域名并将其转换为 IP 地址。这种方式适用于域名对应 IP 不会发生变化的情况[^1]。 例如,在配置文件中可以这样设置: ```nginx server { listen 80; server_name example.com www.example.com; location / { root /var/www/example; index index.html; } } ``` 上述配置表示监听端口 80 并处理来自 `example.com` 和 `www.example.com` 的请求[^2]。 --- #### 2. 泛域名解析 对于需要支持多个子域名的场景,可以通过正则表达式实现泛域名匹配。以下是典型的配置示例: ```nginx server { listen 80; server_name ~^(?<subdomain>.+)\.yourdomain\.com$; location / { proxy_pass http://backend_server_$subdomain; } } ``` 此配置允许任意二级域名(如 `test.yourdomain.com`, `dev.yourdomain.com`)被解析到不同的后端服务。 --- #### 3. 动态域名解析 (Resolver) 如果目标域名对应的 IP 地址可能会发生变化,则需要启用动态解析功能。这通过 `resolver` 指令指定 DNS 服务器地址来实现。每次请求都会根据 DNS 缓存的有效时间重新查询最新的 IP 地址[^3]。 以下是一个完整的动态解析配置实例: ```nginx http { resolver 114.114.114.114 ipv6=off; # 使用公共 DNS 服务器 server { listen 80; server_name dynamic-domain.com; location / { set $target_backend backend-server.dynamic-domain.com; proxy_pass http://$target_backend; } } } ``` 在此配置中: - `resolver` 定义了用于实时解析的目标 DNS 服务器。 - `$target_backend` 是一个变量,存储实际要访问的服务名称。 - 当目标域名的 IP 发生变更时,Nginx 能够自动更新其映射关系[^4]。 --- #### 4. TTL 控制与性能优化 为了减少频繁的 DNS 查询带来的开销,建议合理调整 DNS 记录的生存时间(TTL)。默认情况下,Nginx 会遵循 DNS 提供的 TTL 设置;也可以手动覆盖这一行为,例如强制每分钟刷新一次记录: ```nginx resolver 8.8.8.8 valid=1m; # Google Public DNS, 缓存有效期设为 1 分钟 ``` 这种做法可以在稳定性与效率之间找到平衡点。 --- ### 总结 以上介绍了三种常见的 Nginx 域名解析方法:静态解析适合固定 IP 的情况;泛域名解析满足多级子域需求;而动态解析则是应对高可用性和灵活性的最佳实践方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值