跨域技术+Nginx项目部署+Nginx实现负载均衡

nginx反向代理、负载均衡、跨域问题 nginx的应用场景 1、http服务器:Nginx是一个http服务器,可以独立提供http服务。可以作为静态网页服务器。 2、虚拟主机:可以实现一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。 3、反向代理:当网站的访问量达到一定程度后,单台主机不能满足用户的请求时,需要用多台服务器集群可以使用Nginx做反向代理。 4、负载均衡:并且多台服务器可以平均分担负载,不会因为某台服务器负载高... 阅读详情

一.什么是跨域

 

当两个域具有相同的协议(如http), 相同的端口(如80),相同的host(如www.google.com),那么我们就可以认为它们是相同的域(协议,域名,端口都必须相同)。

 

跨域就指着协议,域名,端口不一致,出于安全考虑,跨域的资源之间是无法交互的(例如一般情况跨域的JavaScript无法交互,当然有很多解决跨域的方案)

(浏览器的同源安全策略

没错,就是这家伙干的,浏览器只允许请求当前域的资源,而对其他域的资源表示不信任。那怎么才算跨域呢?

 

请求协议http,https的不同

域domain的不同

端口port的不同)

 

2.实现跨域访问的方式

1) JSONP :

 

动态添加一个<script>标签,而script标签的src属性是没有跨域的限制的。这样说来,这种跨域方式其实与ajax XmlHttpRequest协议无关了,而缺点也很明显,它只支持GET请求而不支持POST等其它类型的HTTP请求;它只支持跨域HTTP请求这种情况,不能解决不同域的两个页面之间如何进行JavaScript调用的问题

 

2) NGINX代理 :

 

通过一个代理服务器,将跨域的请求转发,如:前端JS在http://www.demo.com/a.js,后端是http://www.abc.com/app/action,通过代理可将后端的地址转换成http://www.demo/app/action,这样,从前端发起的请求,就不存在跨域的情况了

 

3)CORS

 

然后CORS是支持所有类型的HTTP请求,并且也只是服务端进行设置即可,但是缺点就是老的浏览器不支持CORS(如:IE7,7,8,等)

https://www.jianshu.com/p/89a377c52b48

 

3.具体实现

前台:

1.jsonp请求

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <script src="https://cdn.bootcss.com/jquery/3.4.0/jquery.js"></script>
  <title>Document</title>
 </head>
 <body>
  <input type="button" onclick="btn()" value="跨域"/>
 </body>
	<script>
		function btn(){
			$.ajax({
				url:'http://192.168.110.128/nginx-demo/test',
				type:'GET',
				data:{},
				dataType:'json',
				success:function(data){
					alert(1)
					alert(data.name)
				}
			})
		}
	</script>
</html>

主要讲下cors怎么实现

1.controller层加上注解

@CrossOrigin(methods = { RequestMethod.GET, RequestMethod.POST }, origins = "*")

2.结合Filter

在启动类上加如下代码,可以直接封装成类:

    @Bean
    public CorsFilter corsFilter() {

        final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();

        final org.springframework.web.cors.CorsConfiguration config = new org.springframework.web.cors.CorsConfiguration();

        config.setAllowCredentials(true); // 允许cookies跨域

        config.addAllowedOrigin("*");// #允许向该服务器提交请求的URI,*表示全部允许,在SpringMVC中,如果设成*,会自动转成当前请求头中的Origin

        config.addAllowedHeader("*");// #允许访问的头信息,*表示全部

        config.setMaxAge(18000L);// 预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了

        config.addAllowedMethod("OPTIONS");// 允许提交请求的方法,*表示全部允许

        config.addAllowedMethod("HEAD");

        config.addAllowedMethod("GET");// 允许Get的请求方法

        config.addAllowedMethod("PUT");

        config.addAllowedMethod("POST");

        config.addAllowedMethod("DELETE");

        config.addAllowedMethod("PATCH");

        source.registerCorsConfiguration("/**", config);

        return new CorsFilter(source);

    }

二:使用Nginx实现负载均衡:

1使用多个tomcat

2每个tomcat部署相同的项目

3.使用nginx反向代理tomcat

将项目模块打成war包

以下代码粘pom文件

声明war包

<packaging>war</packaging>
禁止本地tomcat启动
<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <scope>provided</scope>
</dependency>
<build>
    <finalName>这里设置打成的war包的名称</finalName>
</build>

2.修改微服

 

务启动类,继承SpringBootServletInitializer重写configure方法

package com.jk;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class NginxDemoApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(NginxDemoApplication.class, args);
    }


    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(NginxDemoApplication.class);
    }

}

打包war包

先clean一下 再packge打包  将打好的war包放到Tomcat的 wabapp目录下  然后通过命令启动tomcat

 

 

listen:表示当前的代理服务器监听的端口,默认的是监听80端口。注意,如果我们配置了多个server,这个listen要配置不一样,不然就不能确定转到哪里去了。

server_name:表示监听到之后需要转到哪里去,这时我们直接转到本地,这时是直接到nginx文件夹内。

location:表示匹配的路径,这时配置了/表示所有请求都被匹配到这里

root:里面配置了root这时表示当匹配这个请求的路径时,将会在这个文件夹内寻找相应的文件。

index:当没有指定主页时,默认会选择这个指定的文件,它可以有多个,并按顺序来加载,如果第一个不存在,则找第二个,依此类推。

最终效果:

 

 

搭建视频和跨域封装类,我的百度网盘地址:

链接:https://pan.baidu.com/s/1SnlFgXGFSqBSqagiB5VaGQ 

 

 

 

Nginx应用核心概念、nginx配置缓存、HTTPS、nginx配置跨域CORS、nginx架构说明 动静分离是指在 web 服务器架构中,将静态页面与动态页面或者静态内容接口和动态内容接口分开不同系统访问的架构设计方法,进而提示整个服务的访问性和可维护性。一般来说,都需要将动态资源和静态资源分开,由于 Nginx 的高并发和静态资源缓存等特性,经常将静态资源部署在 Nginx 上。如果请求的是静态资源,直接到静态资源目录获取资源,如果是动态资源的请求,则利用反向代理的原理,把请求转发给对应后台应用去处理,从而实现动静分离。 阅读详情

相关推荐

电流采样(分流器与霍尔传感器)

霍尔效应霍尔效应是磁电效应的一种,这一现象是霍尔(A.H.Hall,1855—1938)于1879年在研究金属的导电机构时发现的。霍尔效应是研究半导体材料性能的基本方法。通过霍尔效应实验测定的霍尔系数,能够判断半导体材料的导电类型、载流子浓度及载流子迁移率等重要参数。简单原理如图1所示,半导体薄片两端通以控制电流I,垂直方向施加磁感应强度为B的匀强磁场,d为半导体材料的厚度,k为霍尔常数,它与半导体材质有关,则在垂直于电流和磁场的方向上,将产生电势差为UH的霍尔电压,它们之间的关系为。霍尔元件。

weixin_48867130的博客 1万+

Nginx配置负载均衡与解决跨域问题

文章目录一、负载均衡配置二、解决跨域三、失败跳转问题四、负载均衡策略1、轮询2、最少连接3、最少连接4、ip_hash 一、负载均衡配置 upstream blogServer{ server 127.0.0.1:8080; } server { listen 80; server_name localhost; ...

qq314499182的博客 3028

告别PXE!用iPXE在CentOS 8.5上搭建一个能同时装Win11和Linux的万能网络启动盘

本文详细介绍了如何在CentOS 8.5上使用iPXE搭建支持Windows 11和Linux双系统部署的全能网络启动盘。通过对比传统PXE的局限性,展示了iPXE在HTTP协议支持、多架构适配和智能脚本方面的优势,提供从环境准备、服务配置到智能菜单开发的完整解决方案,显著提升系统部署效率。

weixin_29278805的博客 265

1.学习Nginx 详细介绍(负载均衡、全局异常、跨域、封禁IP、路径匹配、地址重定向、Websocket反向代理、缓存、压缩)

学习Nginx 详细介绍(负载均衡、全局异常、跨域、封禁IP、路径匹配、地址重定向、Websocket反向代理、缓存、压缩)

weixin_43620238的博客 2145

做小程序支付时,我是怎么被“虚拟支付”绊了一跤的

微信小程序支付开发中,普通支付与虚拟支付存在本质差异。开发者常误将虚拟权益(会员、点数等)当作普通商品支付,导致审核失败。两者在审核关注点、结算方式、API调用及平台政策上都截然不同。关键点在于:1)先明确交易对象类型;2)产品命名需真实反映权益性质;3)支付成功≠业务完成;4)审核说明要详细描述交付逻辑;5)避免依赖过时规则。正确顺序应是:判断商品属性→选择支付类型→设计订单系统→准备审核材料。这个认知差异比技术实现更重要,提前理解平台规则可大幅减少返工。

zhurizhe71的学习之路 2582

保姆级教程:在阿里云ECS上用Docker一键部署EMQX MQTT服务器(Ubuntu 20.04)

本文提供在阿里云ECS上使用Docker一键部署EMQX MQTT服务器的详细教程,涵盖从实例创建、Docker环境配置到EMQX部署与优化的全流程。适合物联网开发者快速搭建高效、安全的MQTT消息服务器,适用于智能家居、工业物联网等场景。

weixin_28739079的博客 308

一篇文章读懂Nginx的负载均衡,缓存和跨域

本篇文章描述了什么是负载均衡,负载均衡的分类,负载均衡的算法和在nginx中如何配置负载均衡还有Nginx中的缓存和跨域问题。

BUG 1026

恶意代码分析实战——使用Apatedns和Inetsim模拟网络环境

恶意代码分析实战——使用Apatedns和Inetsim模拟网络环境 注:本次实验主要是《恶意代码分析实战》一书中进入动态恶意代码分析篇章的开始,主要通过Apatedns以及Inetsim来模拟为恶意代码提供其需要的网络环境,本次实验以Lab01-03.exe为例。 一、实验环境及工具。 Vmware虚拟机:win10(win7)、kali 主要工具:Apatedns、Inetsim 二、工具的安装下载 1、Apatedns:需安装至windows虚拟机客户端(win10,win7均可) 下载地址:http

妙蛙种子吃了都会妙妙秒的妙脆角的博客 7935

Nginx实现负载均衡以及跨域问题解决

软负载和硬负载的区别 软负载 软负载是基于服务器安装的特定软件,比如:nginx实现负载均衡。 硬负载 硬负载均衡是基于固定的硬件实现负载均衡,比如:F5。 基于Nginx实现反向代理 在nginx.conf配置文件中配置如下: server { listen 80; server_name www.mayikt.com; #请求的域名 # location / { proxy_pass http://127

weixin_44044929的博客 2400

HIDL概述

HIDL背景 Treble 是 Google Android 团队的一项重大项目,意在 Android 操作系统框架在架构方面的一项重大改变,旨在让制造商以更低的成本更轻松、更快速地将设备更新到新版 Android 系统。Android 7.x 及更早版本中没有正式的供应商接口,因此设备制造商必须更新大量 Android 代码才能将设备更新到新版 Android 系统: 图1 Treble ...

u013357557的专栏 2万+

java技术专家【面试】Java程序员英语面试整个流程

java技术专家【面试】Java程序员英语面试整个流程

大壮 755

【vue项目部署】Linux+Nginx实现项目部署及跨域

我们可以使用epel源(EPEL : Extra Packages for Enterprise Linux是基于Fedora的一个项目,为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux.)。Centos 7下安装nginx,使用yum install nginx,报错提示没有可用的软件包。在浏览器输入你的公网IP,无需端口号(默认80),如果看到。之类的界面,就是Nginx安装并启动成功了。一般,我们的项目都会放在。目录下,如果没有,创建。

前端学习博客 2568

化工设备设计软件:PVELITE二次开发_(12).数据导入导出与兼容性

在数据导入之前,需要定义数据在PVELITE中的结构。可以通过编程接口定义字段名称和数据类型。# 导入必要的库 import pvelite # 创建PVELITE实例 pve = pvelite . PVELITE() # 定义CSV数据结构 csv_structure = {

kkchenjj的博客 1212

【送书活动九期】配置nginx代理转发实现跨域

有时我们会使用一些java或node应用,不想让他们直接监听80端口,这时就需要用到端口转发。或者经常做前后端分离项目的同学应该很有感触,前后端往往不是部署在一台服务器,前端写死调用的固定ip和端口也不太现实,这时通过配置nginx代理转发来灵活实现前后端的交互,是一种可行的办法

鄙人kunzhi96,感恩遇见! 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

深入解析 Nginx 跨域解决方案

在浏览器中,同源策略(Same-Origin Policy)是限制不同源之间交互的安全机制。具体而言,同源策略要求协议、域名和端口必须相同才能允许两个网站之间的直接交互。跨域就是指当前请求的源(包括协议、域名、端口)与目标服务器的源不相同,浏览器会阻止这种请求,以避免潜在的安全风险。当前前端应用部署在,而后端接口在,这两个域名被认为是不同源,浏览器会阻止前端直接发起跨域请求。

一碗黄焖鸡三碗米饭的博客 2946

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Nginx和Tomcat实现负载均衡群集部署应用

Nginx凭借其高性能、高并发和低资源占用的特点,成为了一款出色的反向代理服务器和负载均衡器。而Tomcat则是一款广泛使用的Java Web应用服务器,它支持集群部署,可以将多个Tomcat实例组合成一个逻辑上的服务器集群,实现请求的负载均衡和会话共享,

博客之路,前途漫漫 5522

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

使用Nginx解决跨域问题,Java实现

跨域是前端开发中经常会遇到的问题,前端调用后台服务时,通常会遇到 No ‘Access-Control-Allow-Origin’ header is present on the requested resource的错误,这是因为浏览器的同源策略拒绝了我们的请求。 所谓同源是指,域名,协议,端口相同,浏览器执行一个脚本时同源的脚本才会被执行。如果非同源,那么在请求数据时,浏览器会在控制台中报一...

蒙牛真好的博客 1915

vue 跨域问题解决方案

用Vue-cli脚手架搭建了个demo,前后分离就有跨域问题的出现。 vue-clie搭建demo步骤(传送门):https://www.cnblogs.com/wangenbo/p/8487764.html 我自己在网上找了2个接口做测试: 优快云:https://www.youkuaiyun.com/api/articles?type=more&amp;category=home&amp;show...

qq_33443033的博客 6万+

Windows下利用Nginx部署纯前端项目(前后台完全分离项目部署及解决跨域请求后台数据问题)

1.下载nginx https://www.nginx.cn/nginx-download 下载稳定版本,以nginx/Windows-1.16.1为例,直接下载 nginx/Windows-1.16.1 下载后解压,解压后如下: 2.启动nginx 有很多种方法启动nginx (1)直接双击nginx.exe,双击后一个黑色的弹窗一闪而过 (2)打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe 或者 start nginx ,回车即可 3.检查ngi..

duansamve的博客 1万+

【Nginx反向代理解决跨域】

写在前面出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)。这里,我们利用Nginx的反向代理功能解决跨域问题,至于,什么是Ngi

诗和远方,代码和你 6041

nginx:如何利用Nginx解决前端跨域问题?

作为资深Java工程师,深入理解Nginx在跨域解决方案中的应用,不仅能提升系统架构能力,更能体现全局视野。本文介绍的方案在阿里双11和字节跳动春晚红包等大流量场景中均得到验证,具有极高的工程实践价值。

weixin_43290370的博客 1386

nginx部署/代理/跨域/负载均衡

@TOP 关于nginx,咱们先了解nginx在开发过程中的主要作用 nginx解决跨域 nginx负载均衡 一、nginx解决跨域 如果要理解什么是跨域 广义上的跨域是指一个域下的文档或脚本试图去请求另一个域下的资源。即浏览器的同源策略/SOP限制引起的跨域也属于在内; 那么什么是同源策略呢? 同源策略/SOP(Same origin policy)是一种约定,由Netscape公...

王一诺Eno 374

利用Nginx解决跨域问题

利用nginx解决前端跨域问题浏览器的同源策略含义目的跨域描述跨域的常见解决方法nginx解决跨域正向代理特点举例总结用途反向代理特点举例用途作用正向代理和反向代理图示区别负载均衡描述种类Nginx配置(极简) 浏览器的同源策略 浏览器安全的基石是"同源政策"(same-origin policy)。 含义 同源政策指的是: 协议相同 域名相同 端口相同 目的 同源政策的目的,是为了保证用户信息的安全,防止恶意的网站窃取数据。 跨域 描述 协议,域名,端口号,只要有一个不同,就会产生跨域问题。 跨域的常

Kayson13的博客 1051

使用Nginx解决跨域问题

使用Nginx解决跨域问题、Nginx代理流式接口

卑微牛马学习笔记 3483

前端工程化部署入门:Windows + Nginx 实现多项目独立托管与跨域解决方案

我在日常前端开发中,我常常会遇到一个令人头疼的问题:本地运行得好好的项目,一旦打包交给后端部署到 `Nginx` 上,就各种“水土不服”——页面白屏、静态资源 `404`、路由刷新 `404`、接口跨域……排查起来费时又费力。

前端开发工程师 2004
上一篇: 在Linux系统上搭建Nginx+tomcat集群部署
下一篇: Linux 常用命令,自己总结
听风动
博客等级 码龄8年 63粉丝 90原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听风动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值