NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
wwc
V2EX  ›  NGINX

NGINX 禁止访问 443 端口问题

  •  
  •   wwc · Mar 19, 2017 · 8440 views
    This topic created in 3381 days ago, the information mentioned may be changed or developed.

    如果想禁止别人用我们未绑定的域名或 IP 访问 80 端口,可以这样写:

    server { listen 80 default_server; server_name ""; return 444; }

    这样一来,凡是没有绑定的域名包括 IP 访问 80 端口都会关闭连接,已经绑定的域名可以正常访问。 于是,我就用同样的办法,对 443 端口进行同样的限制,于是这样写:

    server { listen 443 default_server; server_name ""; return 444; }

    然后问题来了,所有 443 端口都无法使用了,就算是已绑定的域名也被关闭连接了。 问题出在哪里呢,难道 443 端口无法实现那样的效果吗?

    14 replies    2017-03-19 22:09:44 +08:00
    Flygoat
        1
    Flygoat  
       Mar 19, 2017 via iPad
    443 端口需要先建立连接才能得到 hostname 。。。。
    wwc
        2
    wwc  
    OP
       Mar 19, 2017
    @Flygoat 原来如此,那还有没有办法实现那种效果呢?
    Flygoat
        3
    Flygoat  
       Mar 19, 2017 via iPad
    @wwc 建议还是 hostname 不对返回个 403 吧。。直接断连接目测是没有办法了
    lhbc
        4
    lhbc  
       Mar 19, 2017
    server_name _;
    wwc
        5
    wwc  
    OP
       Mar 19, 2017
    @Flygoat 还是不行,一样连正常绑定的也没法访问了……
    xmgit
        6
    xmgit  
       Mar 19, 2017
    我是直接 301 到百度
    Flygoat
        7
    Flygoat  
       Mar 19, 2017 via iPad
    @Bardon 直接定义 default_server 然后返回 403 啊
    xmgit
        8
    xmgit  
       Mar 19, 2017
    不知道你双引号的写法是哪里来的
    听 4 楼的
    另外如果你的 443 指的是 ssl 的话,没必要多此一举
    wwc
        9
    wwc  
    OP
       Mar 19, 2017
    @Bardon nginx 官网文档是这样写的,不这样高的话,别人直接 https 访问我 IP 就知道我是什么站了啊
    pubby
        10
    pubby  
       Mar 19, 2017
    测试看看啊

    openssl s_client -connect <your server ip>:443 -tls1_2 -servername notexists.host.com
    pubby
        11
    pubby  
       Mar 19, 2017
    我是加了一个自签证书

    listen 443 ssl default;
    server_name localhost;
    ssl_certificate cert.pem;
    ssl_certificate_key cert.key;
    xmgit
        12
    xmgit  
       Mar 19, 2017
    未绑定的域名,应该是人家域名直接解析到你 ip
    ip ,就是直接 ip 访问

    防止他们访问,官方写法是
    server {
    listen 80 default_server;
    server_name _;
    return 444;
    }

    443 端口,用 default_server 是个什么意思,你给你的 ip 所在的 localhost 配了 ssl 证书了?就算配了证书了,人家通过其他域名解析过来,也会遇到证书错误呀
    LGA1150
        13
    LGA1150  
       Mar 19, 2017
    @wwc SNI
    salmon5
        14
    salmon5  
       Mar 19, 2017
    server {
    listen 443 ssl default_server;
    return 501;
    }
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   764 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 20:57 · PVG 04:57 · LAX 13:57 · JFK 16:57
    ♥ Do have faith in what you're doing.