通常我们在配置nginx时,往往会把IP地址忘记,殊不知,如果没有限制IP地址访问,那么默认IP地址也可以访问到你的网站。
为了使网站服务器更加安全,我们可以通过nginx,把用户请求服务器的IP地址直接重定向到403。
限制用户禁止通过IP访问默认的80地址,可通过修改nginx.conf文件,在http字段添加以下内容。
http { ...... server { listen 80 default_server; listen [::]:80 default_server; server_name _; return 403; } ......}
|-------------------|------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 9 | http { ...... server { listen 80 default_server; listen [::]:80 default_server; server_name _; return 403; } ......} |
这样用户直接请求服务器的IP地址,就会变成403。
好了,我们说过80请求403限制,那么接下来说下443请求限制,与80请求限制一样,在nginx.conf的http字段添加以下内容。
http { ...... server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; ssl_certificate ssl/blog.whsir.com.pem; ssl_certificate_key ssl/blog.whsir.com.key; server_name _; return 403; } ......}
|-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 9 10 11 | http { ...... server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; ssl_certificate ssl/blog.whsir.com.pem; ssl_certificate_key ssl/blog.whsir.com.key; server_name _; return 403; } ......} |
注意:上面的证书文件随便配置个即可,如果不配置ssl证书字段,会报[emerg] no "ssl_certificate" is defined for the "listen ... ssl"。
那么问题来了,如果我想同时禁止用户通过IP请求80和443,我需要添加两个配置文件吗?
当然,你可以同时配置两个文件,也可以将两个server字段进行合并,合并后的配置如下
server { listen 80 default_server; listen [::]:80 default_server; listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; ssl_certificate ssl/blog.whsir.com.pem; ssl_certificate_key ssl/blog.whsir.com.key; server_name _; return 403; }
|----------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 9 10 | server { listen 80 default_server; listen [::]:80 default_server; listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; ssl_certificate ssl/blog.whsir.com.pem; ssl_certificate_key ssl/blog.whsir.com.key; server_name _; return 403; } |