插件窝 干货文章 NGINX监听域名,不监听端口

NGINX监听域名,不监听端口

server 监听 端口 example 484    来源:    2025-04-03

NGINX 监听域名但不监听端口的配置分析

在 NGINX 中,您可以通过配置 server_name 指令来监听特定的域名,而不需要显式指定端口(此时会使用默认的 80 端口或 443 端口,取决于是否启用 SSL)。

基本配置示例

server {
    listen 80;  # 默认监听80端口,可省略
    server_name example.com www.example.com;

    location / {
        root /var/www/example.com;
        index index.html;
    }
}

关键点说明

  1. 端口监听行为

    • 如果省略 listen 指令,NGINX 会默认监听 80 端口(HTTP)
    • 对于 HTTPS,您需要明确配置 listen 443 ssl
  2. 域名匹配优先级

    • NGINX 会首先匹配完全相同的 server_name
    • 然后匹配通配符域名(如 *.example.com
    • 最后匹配默认服务器(第一个定义的或标记为 default_server 的)
  3. 仅监听域名的配置

server {
    server_name example.com;  # 只监听example.com域名,使用默认80端口

    # 其他配置...
}

常见问题解决方案

问题1:如何确保只响应特定域名的请求?

解决方案

server {
    listen 80 default_server;
    server_name _;
    return 444;  # 关闭不符合域名要求的连接
}

server {
    server_name example.com;
    # 正常配置...
}

问题2:如何同时处理带www和不带www的域名?

解决方案

server {
    server_name example.com;
    return 301 $scheme://www.example.com$request_uri;
}

server {
    server_name www.example.com;
    # 主站点配置...
}

问题3:如何验证配置是否正确?

  1. 测试配置语法:nginx -t
  2. 检查监听端口:netstat -tulnp | grep nginx
  3. 使用 curl 测试:curl -H "Host: example.com" http://服务器IP

如果您有更具体的需求或遇到特殊问题,请提供更多细节,我可以给出更有针对性的解决方案。

上一篇:nginx监听ipv6