簡體   English   中英

在 NGINX 上通過 HTTP/HTTPS 拒絕所有非 443 或 80 端口的連接

[英]Deny all connections to ports that aren't 443 or 80 over HTTP/HTTPS on NGINX

我在 Nginx 和 Ubuntu 上運行服務器,該站點有一個域。 我有一個問題,如果有人導航到 IP 和附加端口( https://<ip-addr>:<port> ),它將加載不應直接訪問的服務,可以計算端口用 nmap 出來。

我正在嘗試向這些類型的連接返回 444。 我試過在“服務器”塊下添加這些:

if ($host != "domain.tld") {
          return 444;
                   }

    location / {

        return 444;
   }

現在,這些對於拒絕與 IP 的連接並將其限制在域中非常有效,但是如果您使用 ip 和端口,它會加載得很好。 如果其中一些服務沒有某種形式的身份驗證,那么它們就會暴露給任何人和每個人。

我嘗試使用 iptables 來阻止端口,但這也會阻止 ` https://domain.tld/service ,但這需要工作。

服務應該只能通過這個 URL 而不是 IP 和端口訪問。

嘗試這個

server { # Will redirect all http to https
    listen      80 default_server;
    server_name _; # will catch everything

    return 301 https://domain.tld$request_uri;
}

server{ # Will redirect everything that is not "domain.tld" to http://domain.tld
    listen      443 ssl http2;
    server_name _; # will catch everything

    ssl_...

    return 301 http://domain.tld$request_uri;
}

server { # Do normal behavior
    listen      443 default_server;
    server_name *.domain.tld; # will catch everything

    ssl_...

    location / {
        ...
    }

    ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM