跨域是指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是一个高性能的HTTP和反向代理web服务器,同时也提供IMAP/POP3/SMTP服务。其特点是占有内存少,并发能力强。如果我们在项目中用到了Nginx,那么可以用如下的示意图表示:
对于电商平台而言,随着业务的不断发展壮大,网站访问量和数据量也随之急剧增长,该情况的产生给服务器带来了一定的负担。从用户体验层面而言,由于服务器端数据处理带来的时延,往往导致页面的响应速度过慢
查看nginx模块,如果看到with-ssl那就是有的。注册ssl证书并下载,配置nginx就比如说,还没有配置https前你配置了80,那么你http://域名/直接默认访问80端口,那么一样的
nginx启动就会接管服务器上的80端口,所以如果服务器上有80端口的服务,会启动失败,解决办法就是停了它们或者卸载它们,比如另一个服务器 apache,它也是占用80端口的,一般正常情况都是使用不同的域名解析到一个服务器上
Nginx 作为目前应用较广的反向代理服务,原生提供了一套失败重试机制,来保证服务的可用性。本文主要是通过一些简单例子来剖析 Nginx 失败重试机制,让读者能对该机制有一个基础的了解,避免在使用过程中踩坑。
注意:修改 nginx 的 max open files 有个前提,就是你已经修改好了系统的 max open files.先查看 nginx 的 ulimits: 但是还是不够,你这样改了之后,nginx 的并发能力反而会下降,所以还需要改一个关键的参数:
开启Gzip:给Nginx上 ngx_http_gzip_module 这个模块,用 nginx -V 命令查看 configure arguments 是否有,没有的话需要编译加载这个模块;给文件做缓存:图片文件,字体文件,js和css都是些可以用来缓存的文件
nginx访问出现504 Gateway Time-out,一般是由于程序执行时间过长导致响应超时,例如程序执行需要90秒,而nginx最大响应等待时间为30秒,这样就会出现超时。通常有以下几种情况导致:
我在nginx 和tengine 之间选择了tengine。tengine是淘宝公司在nginx 研发的。同时也测试过nginx 在一些功能方面不是很好。比如:限流这块,nginx目前只支持对ip限流
Nginx服务器是Web服务器,也就是我们平时用来提供Web服务的。我们之前可能听过Apache、Tomcat、IIS等的服务器,其实Nginx和它们都是一样的,都可以通过HTTP为浏览器等客户端提供各种服务。
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!