跨域是指a页面想获取b页面资源,如果a、b页面的协议、域名、端口、子域名不同,或是a页面为ip地址,b页面为域名地址,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源
Nginx作为反向代理服务器,就是把http请求转发到另一个或者一些服务器上。通过把本地一个url前缀映射到要跨域访问的web服务器上,就可以实现跨域访问。对于浏览器来说,访问的就是同源服务器上的一个url。而nginx通过检测url前缀,把http请求转发到后面真实的物理服务器
废话不多说,我们直接打开nginx.conf文件
server {
listen 8888;
server_name 127.0.0.1;
location / {
proxy_pass http://127.0.0.1:5500;
}
location /api{
proxy_pass http://ip.taobao.com/;
}
}
配置解释:
我们在浏览器中输入 127.0.0.1:8888 自动会转发到 http://127.0.0.1:5500
http://127.0.0.1:5500 是本地所指向的地址,类似于vue开的的代理npm run dev 启动的一个地址
http://ip.taobao.com/ 是我们要访问的接口地址(淘宝检测ip地址来源的接口)
前端ajax的url地址 这样写 http://127.0.0.1:8888/api/service/getIpInfo.php?ip=117.89.35.51,访问的url中有api nginx会自动换到所对应的location
前端实列代码:
//新建一个html文件把以下代码放入script标签中
$.ajax({
//请求淘宝检测ip地址来源的接口
url:'http://127.0.0.1:8888/api/service/getIpInfo.php?ip=117.89.35.51',
type:'get',
success:function(res){
console.log(res)
},
error:function(err){
console.log(err)
}
})
启动服务:
我是通过vsCode的Go live插件启动了一个127.0.0.1:5500的服务,有很多同学是通过node开启的代理,都一样,
然后我们在浏览器中输入127.0.0.1:8888上面nginx所配置
打开浏览器network数据返回如下,说明跨域访问成功
1.jsonp 需要目标服务器配合一个callback函数。
2.window.name+iframe 需要目标服务器响应window.name。
3.html5的 postMessage+ifrme 这个也是需要目标服务器或者说是目标页面写一个postMessage,主要侧重于前端通讯。
4.node.js开启本地代理,类似于vue-cli中的devServer模式,阔以方便开启代理
5.CORS 需要服务器设置header :Access-Control-Allow-Origin。
6.Nginx反向代理,可以不用目标服务器配合,需要Nginx服务器,用于请求转发。
我个人认为4 、5 、6解决跨域问题在实际开发过程中显得更为重要
Nginx在线配置生成工具(需要翻墙)
如何提高Nginx的性能
Nginx常用命令
Nginx 配置简述(小胡子哥)
来自:https://segmentfault.com/a/1190000018163817
前提条件:nginx源码或nginx plus源码、一个代理服务器或一个代理服务器组、SSL证书和私钥,你可以从一个可信任证书颁发机构(CA)购买一个服务器证书,或者你可以使用openssl库创建一个内部CA签名
查看nginx模块,如果看到with-ssl那就是有的。注册ssl证书并下载,配置nginx就比如说,还没有配置https前你配置了80,那么你http://域名/直接默认访问80端口,那么一样的
首先让nginx服务器监听两个端口,分别是80端口和443端口,注意监听443端口的时候需要配置证书的认证以及创建自签名证书!关于证书的认证的以及创建自签名的证书,nginx的配置如下,只给出了两个server的配置,可以直接复制到http块中。
常见的服务器有三种:Nginx、IIS、Apache,都可以配置https,但是没必要全部知道,因为Nginx可以起到反向代理的作用,会配置Nginx就足够了。在/etc/nginx/conf.d目录下新建https.conf
开启Gzip:给Nginx上 ngx_http_gzip_module 这个模块,用 nginx -V 命令查看 configure arguments 是否有,没有的话需要编译加载这个模块;给文件做缓存:图片文件,字体文件,js和css都是些可以用来缓存的文件
ginx和php-fpm对于-USR2、-HUP信号的处理方式不一样:TERM, INT(快速退出,当前的请求不执行完成就退出),QUIT (优雅退出,执行完当前的请求后退出)
php-fpm采用master/worker架构设计, master进程负责CGI、PHP公共环境的初始化及事件监听操作。worker进程负责请求的处理功能。在worker进程处理请求时,无需再次初始化PHP运行环境,这也是php-fpm性能优异的原因之一
总有一些不怀好意的人来访问我的网站,而且频率还很高,所以就用简单的方式禁止访问,就用 Nginx 来实现。想要添加黑名单,只要在 blocksip.conf 中添加 IP ,然后 reload 即可。
客户端就可以通过请求代理服务器,获取想要的资源,但客户端并不知道给他资源的是哪个服务器。这种方式就是反向代理。当一台服务器的单位时间内的访问量越大的时候,服务器的压力会越大。我们通常通过负载均衡的方式来分担服务器的压力。
使用情境:我想输入www.abc.com/a/1后,实际上是跳转到www.abc.com/index.php/a/1,配置Nginx.conf在你的虚拟主机下添加:如果你的项目入口文件在一个子目录内,则.
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!