中间件:Nginx工作使用记录(反向代理)
场景:SpringBoot+Vue前后端分离,用Nginx做反向代理。
一、Nginx.conf
#定义Nginx运行的用户和用户组
user root;
#进行增大并发连接数的处理 跟cpu保持一致 八核设置八个
worker_processes 1; #nginx的错误日志路径
error_log /var/log/nginx/error.log warn;
#nginx服务启动时候pid 进程ID
pid /var/run/nginx.pid;#定义事件相关的属性
events {#一个进程允许处理的最大连接数worker_connections 1024;
}http {# 文件扩展名与文件类型映射表(支持的文件类型)include /etc/nginx/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 /var/log/nginx/access.log main;# 开启高效文件传输模式。sendfile on;# 防止网络阻塞#tcp_nopush on;# 长连接超时时间,单位是秒keepalive_timeout 65;# 开启gzip压缩输出#gzip on;# 导入server配置文件include /etc/nginx/conf.d/*.conf;
}
二、server配置文件样例
1、a.conf
server {# 需要被监听的端口号,前提是此端口号没有被占用,否则在重启 Nginx 时会报错listen 9500;# 域名可以有多个,用空格隔开server_name localhost;# 上述端口指向的根目录root /u01/a/a1/a-web/dist;# 项目根目录中指向项目首页index index.html;#client_max_body_size 默认 1M,表示 客户端请求服务器最大允许大小,#在“Content-Length”请求头中指定。#如果请求的正文数据大于client_max_body_size,#HTTP协议会报错 413 Request Entity Too Large。#就是说如果请求的正文大于client_max_body_size,一定是失败的。#如果需要上传大文件,一定要修改该值。client_max_body_size 20m; #Nginx分配给请求数据的Buffer大小,如果请求的数据小于client_body_buffer_size#直接将数据先在内存中存储。#如果请求的值大于client_body_buffer_size小于client_max_body_size,#就会将数据先存储到临时文件中,在哪个临时文件中呢?#client_body_temp 指定的路径中,默认该路径值是/tmp/.#所以配置的client_body_temp地址,一定让执行的Nginx的用户组有读写权限。#否则,当传输的数据大于client_body_buffer_size,写进临时文件失败会报错。client_body_buffer_size 128k;#传输的数据大于client_max_body_size,一定是传不成功的。#小于client_body_buffer_size直接在内存中高效存储。#如果大于client_body_buffer_size小于client_max_body_size会存储临时文件,#临时文件一定要有权限。#如果追求效率,就设置 client_max_body_size client_body_buffer_size相同的值,#这样就不会存储临时文件,直接存储在内存了。# 访问控制# 根请求会指向的页面 location / {# 配合@使用, 如果能找到指定的uri那么就返回相应的内容,#否则的话就内部重定向到后端名称为@backup的location# 此处的 @router 实际上是引用下面的转发,否则在 Vue 路由刷新时可能会抛出 404try_files $uri $uri/ @router;# 请求指向的首页index index.html;# 返回nginx的状态#stub_status on ; # 允许的访问地址#allow 192.168.*.**; # 默认禁止所有访问,除了允许的#deny all; }# 由于路由的资源不一定是真实的路径,无法找到具体文件# 所以需要将请求重写到 index.html 中,然后交给真正的 Vue 路由处理请求资源location @router {rewrite ^.*$ /index.html last;}# 目录列表(API控制) location /api/ {# 后端的真实接口 反向代理proxy_pass http://192.168.*.**:5002/api/;# 重定向 关proxy_redirect off;#反向代理设置 proxy_set_header是用来设置请求头的,设置了请求头后,#后端服务器就可以获取到这些变量值。#proxy_set_header Host $host; $host就是nginx代理服务器,#也就是windows客户端请求的host#$host代表转发服务器,$proxy_port代表转发服务器请求后端服务器的端口proxy_set_header Host $host;#将$remote_addr的值放进变量X-Real-IP中,此变量名可变,$remote_addr的值为客户端的ipproxy_set_header X-Real-IP $remote_addr;#封装报文#后端的Web服务器可以通过X-Forwarded-For获取用户真实IPproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Cookie $http_cookie;# for Ajax#fastcgi_param HTTP_X_REQUESTED_WITH $http_x_requested_with;proxy_set_header HTTP-X-REQUESTED-WITH $http_x_requested_with;proxy_set_header HTTP_X_REQUESTED_WITH $http_x_requested_with;proxy_set_header x-requested-with $http_x_requested_with;#限制请求体的大小,若超过所设定的大小,返回413错误。client_max_body_size 10m;#缓冲区代理缓冲用户端请求的最大字节数,client_body_buffer_size 128k;#http请求无法立即被容器(tomcat, netty等)处理,被放在nginx的待处理池中等待被处理。#此参数为等待的最长时间,默认为60秒,官方推荐最长不要超过75秒。#nginx跟后端服务器连接超时时间(代理连接超时)proxy_connect_timeout 1000;#http请求被服务器处理完后,把数据传返回给Nginx的用时,默认60秒。#后端服务器数据回传时间(代理发送超时)proxy_send_timeout 1000;#http请求被容器(tomcat, netty等)处理后,nginx会等待处理结果,#也就是容器返回的response。#此参数即为服务器响应时间,默认60秒。#连接成功后,后端服务器响应时间(代理接收超时)proxy_read_timeout 1000;#设置代理服务器(nginx)保存用户头信息的缓冲区大小proxy_buffer_size 128k;#proxy_buffers缓冲区,网页平均在32k以下的设置proxy_buffers 32 32k;#高负荷下缓冲大小(proxy_buffers*2)proxy_busy_buffers_size 128k;#设定缓存文件夹大小,大于这个值,将从upstream服务器传proxy_temp_file_write_size 128k;}
}
2、同模式其他文件,不同listen端口,不同root;
三、nginx.pid
#指定进程id
12597
四、mime.types
types {text/html html htm shtml;text/css css;text/xml xml;image/gif gif;image/jpeg jpeg jpg;application/javascript js;application/atom+xml atom;application/rss+xml rss;text/mathml mml;text/plain txt;text/vnd.sun.j2me.app-descriptor jad;text/vnd.wap.wml wml;text/x-component htc;image/png png;image/svg+xml svg svgz;image/tiff tif tiff;image/vnd.wap.wbmp wbmp;image/webp webp;image/x-icon ico;image/x-jng jng;image/x-ms-bmp bmp;font/woff woff;font/woff2 woff2;application/java-archive jar war ear;application/json json;application/mac-binhex40 hqx;application/msword doc;application/pdf pdf;application/postscript ps eps ai;application/rtf rtf;application/vnd.apple.mpegurl m3u8;application/vnd.google-earth.kml+xml kml;application/vnd.google-earth.kmz kmz;application/vnd.ms-excel xls;application/vnd.ms-fontobject eot;application/vnd.ms-powerpoint ppt;application/vnd.oasis.opendocument.graphics odg;application/vnd.oasis.opendocument.presentation odp;application/vnd.oasis.opendocument.spreadsheet ods;application/vnd.oasis.opendocument.text odt;application/vnd.openxmlformats-officedocument.presentationml.presentationpptx;application/vnd.openxmlformats-officedocument.spreadsheetml.sheetxlsx;application/vnd.openxmlformats-officedocument.wordprocessingml.documentdocx;application/vnd.wap.wmlc wmlc;application/x-7z-compressed 7z;application/x-cocoa cco;application/x-java-archive-diff jardiff;application/x-java-jnlp-file jnlp;application/x-makeself run;application/x-perl pl pm;application/x-pilot prc pdb;application/x-rar-compressed rar;application/x-redhat-package-manager rpm;application/x-sea sea;application/x-shockwave-flash swf;application/x-stuffit sit;application/x-tcl tcl tk;application/x-x509-ca-cert der pem crt;application/x-xpinstall xpi;application/xhtml+xml xhtml;application/xspf+xml xspf;application/zip zip;application/octet-stream bin exe dll;application/octet-stream deb;application/octet-stream dmg;application/octet-stream iso img;application/octet-stream msi msp msm;audio/midi mid midi kar;audio/mpeg mp3;audio/ogg ogg;audio/x-m4a m4a;audio/x-realaudio ra;video/3gpp 3gpp 3gp;video/mp2t ts;video/mp4 mp4;video/mpeg mpeg mpg;video/quicktime mov;video/webm webm;video/x-flv flv;video/x-m4v m4v;video/x-mng mng;video/x-ms-asf asx asf;video/x-ms-wmv wmv;video/x-msvideo avi;
}
五、反向代理可选参数
#以下是一些反向代理的配置,可选.
location / {proxy_pass http://****;proxy_redirect off;proxy_set_header X-Real-IP $remote_addr;#后端的Web服务器可以通过X-Forwarded-For获取用户真实IPproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Host $host;client_max_body_size 10m; #允许客户端请求的最大单文件字节数client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数,proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时)proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时)proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的设置proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)proxy_temp_file_write_size 64k;#设定缓存文件夹大小,大于这个值,将从upstream服务器传
}
六、其他
1、参考 proxy_set_header:Nginx反向代理中proxy_set_header参数说明
中间件:Nginx工作使用记录(反向代理)相关推荐
- 带你了解什么是Nginx(实操反向代理-负载均衡)
文章目录 一.前言 ①什么是Nginx? ②服务中为什么要使用Nginx原因? 二.安装Nginx 1.介绍 2.安装 ①在Linux系统安装nginx ②上传并解压到/usr/local/目录下 ③ ...
- 如何在 FreeBSD 10.2 上安装 Nginx 作为 Apache 的反向代理
如何在 FreeBSD 10.2 上安装 Nginx 作为 Apache 的反向代理 Nginx 是一款自由开源的 HTTP 和反向代理服务器,也可以用作 POP3/IMAP 的邮件代理服务器.Ngi ...
- nginx和tomcat实现反向代理、负载均衡和session共享
这类的文章非常多,nginx和tomcat实现反向代理.负载均衡实现非常easy,能够參照http://blog.csdn.net/liuzhigang1237/article/details/888 ...
- 利用nginx+lua+redis实现反向代理方法教程
这篇文章主要给大家介绍了利用nginx+lua+redis实现反向代理方法教程,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧. 前言 最近因为工作需要,要进行IVR的 ...
- 【经验】使用Nginx对kiftd进行反向代理和域名绑定
本文将向您演示如何通过Nginx对kiftd进行反向代理和域名绑定,从而让访问者能够通过指定的域名来访问kiftd或是您的其他网站页面.尤其是对于需要在同一台服务器上部署多个网站项目和kiftd的用户 ...
- Nginx学习3:反向代理实例
Nginx配置实例-反向代理1 目标 打开浏览器,在浏览器地址栏输入地址 www.123.com,跳转到 liunx 系统 tomcat 主页面中 准备工作 我们在官网下载好tomcat之后,直接将t ...
- Nginx-05:Nginx配置实例之反向代理2
Nginx配置实例之反向代理 目的:使用nginx反向代理,根据访问的路径跳转到不同端口的服务器中,nginx监听端口为9001. 访问http://192.168.17.129:9001/edu/ ...
- Nginx-04:Nginx配置实例之反向代理1
Nginx配置实例之反向代理 目的:在浏览器中数输入www.123.com跳转到tomcat主页. 1.准备工作 (1)安装tomcat,使用默认端口8080,进入tomcat的bin目录中,./st ...
- nginx 1.16 配置反向代理,http,https,ssl
需求 之前云服务上仅部署了门户网站,后来要做小程序开发,还有各项目网站.之前是通过域名+端口访问, 现改为启用二级域名,共用公网IP,80(http).443(https)端口,通过nginx按域名做 ...
- Nginx应用场景之反向代理
本文来说下Nginx应用场景之反向代理的几个问题 文章目录 概述 正向代理 反向代理 Nginx反向代理优势 访问限制 概述 "Nginx是一款轻量级的HTTP服务器,采用事件驱动的异步非阻 ...
最新文章
- [linux]在使用rsync时需要注意的小细节
- 项目遇到的问题或处理办法
- Just a Simple Problem
- 前端面试题Vue-cli目录汇总
- react学习(59)--this.props语法糖
- python怎么清屏_python实现清屏的方法 Python Shell中清屏一般有两种方法。
- 1005. K 次取反后最大化的数组和(javascript)
- centso7.5 安装postman(实测)
- 沙场白帽老兵聊未来的挖洞方向及其它
- 微信公众号分销商城(源码+数据库+文档)
- 基于javaweb的宠物医院管理系统
- Ubuntu20.04安装搜狗输入法指南
- 南阳计算机职称考试报名时间2015,2015河南公务员考试14日起开始报名 南阳市计划招录590人...
- 3.21 Refused Bequest 被拒绝的馈赠
- Docker中成功安装修罗Xiunobbs论坛步骤
- MIGO结合NFT技术带来全新DeFi金融平台
- 90天减重30斤的经验分享
- python:keyword --- 检验Python关键字
- Launchpad是什么?Launchpad使用教程
- 关于flask入门教程-自定义弹出框