使用Nginx的目的
使用阿里云ECS云服务器,首先聊聊笔者使用Nginx的背景。
初始化ECS后会生成一个公网IP,默认访问IP地址自动访问80端口,此时通过ip地址可直接访问启动在80端口的服务。
如再把域名解析到当前ip,即可通过域名直接访问80端口的服务。
然后,出现了一个问题:任何人都可以将域名解析到ip地址,也就是说,通过其他域名也可以访问到自己ECS上的服务。至于目的,这种攻击手段未免太光明正大了,应该是想养域名然后售卖(猜测,脑洞够大的大大交流一下)。
避免这种攻击的方式有很多种,参考网上的答案,配置Nginx是最方便快捷的。
大致思路如下,web端服务以非80端口启动(无法直接通过IP地址访问到),Nginx配置一层正向代理,将域名转发到域名+端口。
结果:解析后使用自己的域名可以直接访问,本质上是转发到了ip地址+端口。而其他域名没有配置端口转发,所以会被拦截下来。
使用Nginx的场景有很多,反向代理,负载均衡等等,防止恶意解析只是其中一种。
也许未来或扩展更多Nginx相关的技术经验,但是代码只是一种工具,技术只有在解决了真正的问题才会产生价值,不然就如同纸上谈兵,毫无意义。
之前看到过一篇文章,讲的是两个开发者在讨论技术选择,其中一个人选择了冷门的Lua,另一个人表示不解,为什么不选择热门的技术,更好的性能,更好的开发体验。然而,她的回答是:能解决我们的问题就行了。
我陷入了深思,2019掀起的微服务架构浪潮我也跟了一把,学习了很多新的技术,名词,感觉盆满钵满。然而很难有机会将其运用到实际的项目开发中,高并发,微服务到底是一种技术,还是一种炫耀的资本,解决的是项目中的实际问题还是就业问题。学习无罪,但在学习前我会思考,我会使用它,还是被它所束缚。
就哔哔这么多,以下是在Linux环境下Nginx的常用命令和我复制下来的配置文件(nginx.conf)
常用命令列表
yum install nginx //安装nginx(centos) //开机自启 systemctl enable nginx systemctl disable nginx //查看nginx状态 systemctl status nginx //启动,停止,重启 systemctl start nginx systemctl stop nginx systemctl restart nginx //重新加载配置 systemctl reload nginx //配置文件的默认位置 /etc/nginx 主配置文件nginx.conf
防止恶意解析配置
server { listen 80 default_server; server_name _; access_log off; return 444; }
# For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; server { listen 80 default_server; server_name _; access_log off; return 444; } server { listen 80; server_name www.zkrun.top; location / { proxy_pass http://www.zkrun.top:8080; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } # Settings for a TLS enabled server. # # server { # listen 443 ssl http2 default_server; # listen [::]:443 ssl http2 default_server; # server_name _; # root /usr/share/nginx/html; # # ssl_certificate "/etc/pki/nginx/server.crt"; # ssl_certificate_key "/etc/pki/nginx/private/server.key"; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 10m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # # # Load configuration files for the default server block. # include /etc/nginx/default.d/*.conf; # # location / { # } # # error_page 404 /404.html; # location = /40x.html { # } # # error_page 500 502 503 504 /50x.html; # location = /50x.html { # } # } }
总结
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。