【问题标题】:How to restrict access to a site by IP through nGinx?如何通过 nGinx 限制 IP 对站点的访问?
【发布时间】:2021-12-16 19:40:01
【问题描述】:

我有一个可以通过输入IP address 访问的网站。我想让它只能通过domain 访问。网上适合的素材很少,nginx.conf文件的颂歌中没有很好的解释替换什么。

在我的文件中已经有 2 个名为 server 的部分。

 server {
        listen 80;
        server_name avoe.com;
        rewrite ^ https://avoe.com$request_uri? permanent;
    }

server {
        listen                      443 ssl;
        server_name                 avoe.com;
        ssl_certificate             /etc/ssl/__reksoft_ru.crt;
        ssl_certificate_key         /etc/ssl/private.key;
        ssl_protocols               TLSv1.2 TLSv1.3;
        ssl_ciphers                 HIGH:!aNULL:!MD5;

        add_header X-Frame-Options "SAMEORIGIN";
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";

        client_body_buffer_size         8k;
        client_max_body_size            20m;
        client_body_in_single_buffer    on;
        client_header_buffer_size       1m;
        large_client_header_buffers 4   8k;

        location /Intra/api/thumbor/ {
            proxy_pass http://thumbor/;
        }

        location /solr {
            proxy_pass http://solr;
        }

        location /minio {
            proxy_pass http://minio;
        }

        location /activemq {
            proxy_pass http://activemq;
        }


        location / {
            proxy_pass http://wildfly/;

            proxy_buffer_size 16k;
            proxy_buffers 16 16k;
            proxy_busy_buffers_size 64k;
            proxy_temp_file_write_size 64k;
            proxy_read_timeout 180s;

            proxy_set_header   Host              $host;
            proxy_set_header   X-Real-IP         $remote_addr;
            proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Proto $scheme;

            if ($request_method !~ ^(GET|HEAD|POST|DELETE|PUT)$ ) {
                return 405;
            }
        }

在哪里添加或替换什么以便只能通过域访问?

【问题讨论】:

  • 为了避免在 SO 上出现很多重复,我将删除我的答案。可以在here找到相同的信息。
  • 我应该在哪个区块写这个?

标签: nginx https dns debian ip


【解决方案1】:

您可以确保将 HTTP Host 标头设置为 avoe.com,如下所示:

if ($http_host != 'avoe.com') {
    return 301 https://avoe.com$request_uri;
}

【讨论】:

  • 我不认为 OP 想要重定向。据我了解,如果请求中缺少正确的 Host 标头值,他想阻止对该站点的访问。
【解决方案2】:

将此配置用作侦听端口 80 的服务器:

server {
    listen 80;
    server_name avoe.com default_server;

    if ($host = avoe.com) {
         return 301 https://$host$request_uri;
    }
    return 404;
}

【讨论】:

  • 我应该在哪个区块写这个?
猜你喜欢
  • 2011-05-13
  • 1970-01-01
  • 2015-11-30
  • 2015-10-21
  • 2018-02-18
  • 1970-01-01
  • 2014-04-24
  • 2022-11-02
相关资源
最近更新 更多