在Nginx中阻止通过IP访问网站的HTTPS

时间:2017-06-07 00:18:00

标签: web-services nginx web https webserver

我已经通过AWS在Ubuntu 16.04上使用Nginx建立了一个网络服务器。对于已注册的域和子域,所有HTTP流量都会重定向到HTTPS。当有人输入“http://IP_Address”时,会将其退回到默认的HTTPS页面。

除了一件事之外,它都很漂亮......如果用户键入“https://IP_Address”,他们会得到一个页面说“IP_Adderess的所有者已经不正确地配置了他们的网站。为了防止您的信息被盗。 ..“

我尝试使用“server_name _;”从服务器块重定向并且消息是证书是针对错误的站点。所以我为重定向服务器块创建了一个自签名证书。但当然它现在提供了一个略有不同的“不信任”消息,并继续提供帮助用户阻止我的网站。

我还试过告诉它只返回404,但是在它到达那一点之前,似乎检查网站是否有效。有没有办法简单地导致“https:// IP_Address”返回404错误或只是不响应我不想提供的URL?

我的配置(简洁编辑)是:

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name _;
        return 301 https://example.org$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    root /var/www/example.org/html;
    index index.html index.php;
    server_name example.org www.example.org;

    location / {
                try_files $uri $uri/ =404;
    }

    <SSL stuff, turning off gzip, transport headers, etc.>

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /var/www/nginx/html;
    }
    server {
    listen 443 default_server;
    listen [::]:443 default_server;
    server_name _;

    ssl_certificate     <path to cert>;
    ssl_certificate_key <path to key>;

    return 301 https://example.org$request_uri;
}

server {
    listen 443 default_server;
    listen [::]:443 default_server;
    server_name _;

    ssl_certificate     /etc/nginx/ssl/nginx-selfsigned.crt;
    ssl_certificate_key /etc/nginx/ssl/nginx-selfsigned.key;

    return 301 https://visionsforlearning.org$request_uri;
}

提前致谢。

0 个答案:

没有答案