欢迎光临
我们一直在努力

Nginx(防盗链,服务器宕机,跨域,防DDOS)

对于图片,B网站,如果想使用A网站中的图片,可以直接写上A网站图片的链接地址,或者将A网站的图片通过右键另存为的方式下载到本地,然后在页面上使用。如果A网站不想让B网站这样干,那么A网站可以采取防盗链的措施,如果使用防盗链,B网站想请求A网站所有需要的资源,通过URL的方式,获取的可能不是原来的图片了,出现403或者被别的图片替代。如果想通过浏览器直接打开图片URL,那么仍然有可能显示403,这就是防盗链。

如下配置:

 

 

nginx应对高并发的手段采用集群方法,如果一个服务域名背后的某个服务器发生了宕机,而此时又恰好轮询到了该服务器,那么就会发生长时间的等待,直到浏览器多次尝试后轮询到没有宕机的服务器才能完成一个服务,大大降低了服务器的效率和用户体验度,即相当于宕机的服务器白白占用了几次轮询尝试时间;

如下配置:

什么是跨域

使用JS获取数据时,涉及到的两个URL只要协议,域名,端口有任何一个不同,都当做是不同的域,相互访问就会有跨域问题;

怎样使用nginx解决跨域问题

步骤一:创建两个工程AProject,BProject

Nginx(防盗链,服务器宕机,跨域,防DDOS) Nginx(防盗链,服务器宕机,跨域,防DDOS)

步骤二:在A工程中创建servlet

 

package com.wn; import com.alibaba.fastjson.JSON; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet("/aServlet") public class AServlet extends HttpServlet { //resp.setContentType("text/html;charset=utf-8"); @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req,resp); } //方法四:使用nginx解決跨域問題 @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String username = req.getParameter("username"); System.out.println("数据:"+username); //响应 resp.getWriter().write("success"); } }

 

步骤三:在B工程中创建jsp页面

 

<%-- Created by IntelliJ IDEA. User: wn Date: 2020/2/6 Time: 10:04 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>跨域</title> <script type="text/javascript" src="js/jquery-1.8.3.min.js"></script> <script> //使用nginx解决跨域问题 $(function () { $("#button").click(function () { var username=$("#username").val(); $.ajax({ url:"http://www.123.com:81/a/aServlet?username="+username, type:"GET", success:function (result) { alert(result) }, error:function () { alert("error!!!") } }) }) }) </script> </head> <body> <input type="text" name="username" id="username"/><button id="button" type="button">提交</button> </body> </html>

 

步骤四:配置nginx.conf文件

 

server { listen 81; server_name www.123.com; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } #nginx解决跨域问题 location /a { proxy_pass http://www.aproject.com:8080/; index index.html index.htm; } location /b { proxy_pass http://www.bproject.com:8081/; index index.html index.htm; }
}

 

什么是ddos攻击

DDoS攻击是Distributed Denial of Service的缩写,翻译成中文就是分布式拒绝服务。即不法黑客组织通过控制服务器等资源,发动对包括国家骨干网络、重要网络设施、政企或个人网站在内的互联网上任一目标的攻击,致使目标服务器断网,最终停止提供服务。

攻击手段

1.通过使网络过载来干扰甚至阻断正常的网络通讯;

2.通过向服务器提交大量请求,使服务器超负荷;

3.阻断某一用户访问服务器;

3.阻断某服务与特定系统或个人的通讯;

如何应对DDOS攻击

防止DDoS攻击有很多种方法,比如使用高防服务器、CDN加速、DDoS清洗等。但是由于经费的限制,我们整不起那些个高大上的玩意,所以只能在我们现有的材料上加工加工来达到应对DDoS攻击的目的。

nginx防止DDOS攻击

配置nginx.conf文件

 

 #防止ddos攻击 #限制IP的每秒请求次数 limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; #限制同一个IP同一时间内创建连接次数 limit_conn_zone $binary_remote_addr zone=addr:10m; server { listen 81; server_name www.ddos.com; location /a { limit_conn addr 1; #同一时间内只能建立一次连接 limit_req zone=one; proxy_pass http://www.aproject.com:8080/welcome.jsp; index index.html index.htm; } }

 

$binary_remote_addr:二进制远程地址;

zone=one:10m:定义zone名字叫one,并为这个zone分配了内存,用来存储会话(二进制远程地址),1m内存可以保存16000会话;

rate=1r/s:限制频率为每秒1个请求;

注:因为设置了1秒钟一个连接,如果一秒钟超过一个请求的话,就是报503状态码,如果一秒钟一个请求,就是正常访问。

 

  • 海报
海报图正在生成中...
赞(0) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《Nginx(防盗链,服务器宕机,跨域,防DDOS)》
文章链接:https://www.456zj.com/21989.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址