使用nginx禁止IP直接访问网站
首先思考下:为什么设置http和https情况下禁止IP直接访问网站?
一般情况下,要使域名能访问到网站需要两步
第一步,将域名解析到网站所在的主机。
第二步,在web服务器中将域名与相应的网站绑定。
但是,如果通过主机IP能直接访问某网站,那么把域名解析到这个IP也将能访问到该网站,而无需在主机上绑定,也就是说任何人将任何域名解析到这个IP就能访问到这个网站。可能您并不介意通过别人的域名访问到您的网站,但是如果这个域名是未备案域名呢?一旦被查出,封IP、拔线甚至罚款的后果都是需要您来承担的。某些别有用心的人,通过将未备案域名解析到别人的主机上,使其遭受损失,这是一种新兴的攻击手段。
打开nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
修改配置文件
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream halo {
ip_hash;
server 127.0.0.1:8090; # blog端口
}
server {
listen 80 default_server;
server_name _;
location / {
return 403;
}
}
server {
listen 443 ssl;
ssl_certificate /usr/local/nginx/cert/7778018_wmhxx.cn.pem; #需要将cert-file-name.pem替换成已上传的证书文件的名称。
ssl_certificate_key /usr/local/nginx/cert/7778018_wmhxx.cn.key; #需要将cert-file-name.key替换成已上传的证书私钥文件的名称。
location / {
return 500;
}
}
#以下属性中,以ssl开头的属性表示与证书配置有关。
server {
listen 443 ssl;
#配置HTTPS的默认访问端口为443。
#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
#如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
server_name www.wmhxx.cn wmhxx.cn; #需要将yourdomain替换成证书绑定的域名。
client_max_body_size 30m;
root html;
index index.html index.htm;
ssl_certificate /usr/local/nginx/cert/7778018_wmhxx.cn.pem; #需要将cert-file-name.pem替换成已上传的证书文件的名称。
ssl_certificate_key /usr/local/nginx/cert/7778018_wmhxx.cn.key; #需要将cert-file-name.key替换成已上传的证书私钥文件的名称。
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的加密套件的类型。
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示使用的TLS协议的类型。
ssl_prefer_server_ciphers on;
location / {
root html; #Web网站程序存放目录。
index index.html index.htm;
proxy_pass http://halo;
}
}
}
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
烦恼的夏洛克!
喜欢就支持一下吧