更多推荐阅读:
前端性能&异常分析排查流程-CSDN博客
关于列表性能分析与标准-CSDN博客
Fullcalendar常用功能介绍-CSDN博客
目录
Nginx介绍
下载和安装
实战分享
场景一、localhost代理线上环境
场景二:通过本地路径访问其他域名的地址信息
防盗链功能
Nginx介绍
当多个客户端同时访问一个服务器时,服务器会爆掉,需要有多台服务器来承担工作,这个时候nginx可以让客户端在访问同一个域名的时候,无感知的访问不同服务器。
几个概念:
1、正向代理例子(VPN):正向代理就是代理客户端,正向代理服务器是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求,并将获得的内容返回给客户端。例如VPN可以将本地代理到香港,从而访问外国的信息。
2、反向代理例子(百度),反向代理就是代理服务器端,用户通过百度一下,你就知道访问百度,这个时候肯定不是访问同一个服务器,而是通过nginx来转发和控制服务器,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端。
3、负载均衡:nginx应用场景之一就是负载均衡。在访问量较多的时候,可以通过负载均衡,将多个请求分摊到多台服务器上,相当于把一台服务器需要承担的负载量交给多台服务器处理,进而提高系统的吞吐率;另外如果其中某一台服务器挂掉,其他服务器还可以正常提供服务,以此来提高系统的可伸缩性与可靠性。
nginx实现负载均衡-CSDN博客
下载和安装
正常来说nginx都是在linux中使用,因为不可能叫运维给你一台主机放在角落当一个服务器(笑),但是接下来因为能力有限都是使用windows版本。
在Nginx的官网的下载页面中(nginx: download),就展示了当前Nginx版本,并提供了下载的连接
重点目录和文件如下:
- 配置nginx.conf
#user指定Nginx Worker进程运行用户以及用户组,默认由nobody账号运行。
#user nobody;#worker_processes指定了Nginx要开启的进程数。每个Nginx进程平均耗费10M~12M内存。建议指定和CPU的数量一致即可。
worker_processes 1;#error_log用来定义全局错误日志文件。日志输出级别有debug、info、notice、warn、error、crit可供选择,
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;#用来指定进程pid的存储文件位置
#pid logs/nginx.pid;#events:设定Nginx的工作模式及连接数上限:
#值得注意的是如果你不知道Nginx该使用哪种轮询方法的话,它会选择一个最适合你操作系统的。
#最大客户端连接数由worker_processes和worker_connections决定,即Max_client=worker_processes*worker_connections。
#在作为反向代理时,max_clients变为:max_clients = worker_processes * worker_connections/4。
#进程的最大连接数受Linux系统进程的最大打开文件数限制,在执行操作系统命令“ulimit -n 65536”后worker_connections的设置才能生效。
events {
worker_connections 1024;
}http {
#文件扩展名与类型映射表:实现对配置文件所包含的文件的设定,可以减少主配置文件的复杂度。类似于Apache中的include方法。
include mime.types;
#这里设定默认类型为二进制流,也就是当文件类型未定义时使用这种方式,例如在没有配置PHP环境时,Nginx是不予解析的,此时,
#用浏览器访问PHP文件就会出现下载窗口
default_type application/octet-stream; ##设置日志模式
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"'; #用来指定此虚拟主机的访问日志存放路径,最后的main用于指定访问日志的输出格式;
#access_log logs/access.log main; #sendfile参数用于开启高效文件传输模式,将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞;
sendfile on;
#激活tcp_nopush参数可以允许把httpresponse header和文件的开始放在一个文件里发布,积极的作用是减少网络报文段的数量;
#tcp_nopush on; #设置客户端连接保持活动的超时时间。在超过这个时间之后,服务器会关闭该连接,单位是"秒";
#keepalive_timeout 0;
keepalive_timeout 65; #开启gzip压缩功能
#gzip on; #反向代理负载均衡配置部分
upstream chenziyi {
server 127.0.0.1:8081;
}
server {
#监听端口
listen 803;
#服务器名称
server_name 127.0.0.1; #Charset用于设置网页的默认编码格式
#charset koi8-r; #access_log logs/host.access.log main; #添加头部信息
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #匹配客户端请求url
location / {
# 指定静态资源根目录
root html;
# 指定默认首页
index index.html index.htm;
proxy_pass http://chenziyi;
}
}
}
用cmd打开,运行`nginx.exe`运行nginx环境
基础命令:
nginx -s reopen #重启Nginxnginx -s reload #重新加载Nginx配置文件,然后以优雅的方式重启Nginxnginx -s stop #强制停止Nginx服务nginx -s quit #优雅地停止Nginx服务(即处理完所有请求后再停止服务)nginx -t #检测配置文件是否有语法错误,然后退出nginx -?,-h #打开帮助信息nginx -v #显示版本信息并退出nginx -V #显示版本和配置选项信息,然后退出nginx -t #检测配置文件是否有语法错误,然后退出nginx -T #检测配置文件是否有语法错误,转储并退出nginx -q #在检测配置文件期间屏蔽非错误信息nginx -p prefix #设置前缀路径(默认是:/usr/share/nginx/)nginx -c filename #设置配置文件(默认是:/etc/nginx/nginx.conf)nginx -g directives #设置配置文件外的全局指令killall nginx #杀死所有nginx进程
实战分享
场景一、localhost代理线上环境
目前七巧低代码中通过localhost访问线上的原理如下:
第一步:定义几个环境的地址,通过npm run dev的时候选择不同的地址
第二步,定义api中的基础url,并在每次定义接口的时候都加上前缀
第三步,配置接口地址,例如定义了一个接口地址是`/qiqiao2/console/api/v1/bpms-runtime`改成’http://127.0.0.1:8080/qiqiao2/console/api/v1/bpms-runtime‘
第四步,利用koa代理,把接口地址代理到https://qiqiao-tcb-qa.qiweioa.cn/qiqiao2/console/api/v1/bpms-runtime
还有一种方式把代理方式就是用nginx代替koa
#user nobody;
worker_processes 1;#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;#pid logs/nginx.pid;events {
worker_connections 1024;
}http {
include mime.types;
default_type application/octet-stream; #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 logs/access.log main; sendfile on;
#tcp_nopush on; #keepalive_timeout 0;
keepalive_timeout 65; #gzip on;
upstream chenziyi {
server 127.0.0.1:8081;
}
server {
#监听端口
listen 803;
server_name 127.0.0.1; #charset koi8-r; #access_log logs/host.access.log main; #添加头部信息
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; location / {
root html;
index index.html index.htm;
proxy_pass http://chenziyi;
# rewrite "^qiqiao2/console/api/v1" / break;
}
location /qiqiao2/runtime/api/v1 {
# root html;
# index index.html index.htm;
proxy_pass https://qiqiao-tcb-qa.qiweioa.cn/qiqiao2/runtime/api/v1;
}
location /qiqiao2/runtime/api/v1/bpms-runtime {
# root html;
# index index.html index.htm;
proxy_pass https://192.168.21.60:8103;
rewrite "^qiqiao2/runtime/api/v1" / break;
}
}
}
场景二:通过本地路径访问其他域名的地址信息
- 假设前端需要预览365office的文件
https://ow365.cn/owview/wv/wv.aspx?WOPISrc=http%3A%2F%2Foosh%2Fwopi%2Ffiles%2F%40%2Fwopi%3FvId%3DmZTIcFeO_l_q2spFMvsHXw--&bs=cWlxaWFvLXRjYi1xYS5xaXdlaW9hLmNuLjQ0M1wxNjYyNjE2NzA2OTk3NjgzNTYzMzA3MjU5OTYxMzQ0MF*ljp*lnotVSeeov_abtOaWsOmXrumimC5kb2N4&token=KATwAnuH*YK9XiDaIr1EH8ZbB25EOGW8&cancopy=
- 但因为跨域的问题 我们想要用这个域名替换
https://localhost:803/qiqiao2/runtime/office365/
替换为
https://ow365.cn
- 实现
https://localhost:803/qiqiao2/runtime/office365/owview/wv/wv.aspx?WOPISrc=http%3A%2F%2Foosh%2Fwopi%2Ffiles%2F%40%2Fwopi%3FvId%3DmZTIcFeO_l_q2spFMvsHXw--&bs=cWlxaWFvLXRjYi1xYS5xaXdlaW9hLmNuLjQ0M1wxNjYyNjE2NzA2OTk3NjgzNTYzMzA3MjU5OTYxMzQ0MF*ljp*lnotVSeeov_abtOaWsOmXrumimC5kb2N4&token=KATwAnuH*YK9XiDaIr1EH8ZbB25EOGW8&cancopy=
防盗链功能
nginx防盗链功能_nginx 判断图片后缀为gif-CSDN博客
Nginx设置Referer来防止盗图的实现方法(头部网站) - YINGSOO
防盗链功能,简单来说就是你可以直接访问该资源,但是不能将我的资源链接放到你自己的服务器上让别人访问,尤其是图片或视频这种比较大的文件,容易导致服务器响应速度缓慢。
#user nobody;
worker_processes 1;#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;#pid logs/nginx.pid;events {
worker_connections 1024;
}http {
include mime.types;
default_type application/octet-stream; #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 logs/access.log main; sendfile on;
#tcp_nopush on; #keepalive_timeout 0;
keepalive_timeout 65; #gzip on;
upstream chenziyi {
server 127.0.0.1:8081;
}
server {
listen 803;
server_name 127.0.0.1; #charset koi8-r; #access_log logs/host.access.log main; #添加头部信息
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; location /qiqiao2/runtime/office365/ {
root html;
index index.html index.htm;
proxy_pass https://ow365.cn/;
proxy_set_header Referer https://ow365.cn;
} # location /qiqiao2/runtime/img {
# proxy_pass https://ow365.cn/img;
# proxy_set_header Referer https://ow365.cn;
# }
}
}
作者:道一云低代码
作者想说:喜欢本文请点点关注~
更多资料分享