nginx 做反向代理
1、Nginx的常用配置大家可以去搜一下,有很多优秀的博客,我这篇文章要实现的需求是:
a.根据访问的域名不同,跳转到不同的项目(html首页,80端口)
b.拦截访问中所有带有api的请求,转发到后端的不同服务器中(Tomcat项目,任意端口)
2、下面是Nginx的nginx.conf配置文件
user root root;
worker_processes 1;
#worker_cpu_affinity 1;
worker_rlimit_nofile 60000;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info; pid /var/run/nginx.pid; events {
use epoll;
worker_connections 60000;
} http {
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 50m;
sendfile on;
tcp_nopush on;
keepalive_timeout 120;
server_tokens off;
tcp_nodelay on; #ws
# map $http_upgrade $connection_upgrade {
# default upgrade;
# '' close;
# }
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k; #Gzip Compression
gzip on;
gzip_buffers 16 8k;
gzip_comp_level 6;
gzip_http_version 1.1;
gzip_min_length 256;
gzip_proxied any;
gzip_vary on;
gzip_types
text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml
text/javascript application/javascript application/x-javascript
text/x-json application/json application/x-web-app-manifest+json
text/css text/plain text/x-component
font/opentype application/x-font-ttf application/vnd.ms-fontobject
image/x-icon;
gzip_disable "msie6"; #If you have a lot of static files to serve through Nginx then caching of the files' metadata (not the actual files' contents) can save
some latency.
open_file_cache max=1000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on; access_log off;
include vhost/*.conf;
}
所有自定义的配置 都在vhost文件夹下面
3、现在贴出两个vhost文件夹下面的自定义配置
server {
listen 80;
server_name dev.hr.static.baidu.com; location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico|js|css|html|woff2|woff)$ {
root /deploy/www/baidu-www/web-hr;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers X-Requested-With;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
}
} server {
listen 80;
server_name dev.am.static.baidu.com; location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico|js|css|html|woff2|woff)$ {
root /deploy/www/baidu-www/web-am;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers X-Requested-With;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
}
}
这个是监听80端口,注意server_name,这个服务名跟你访问的host要一致才可以实现,如果你要进入到hr的首页,那么你在浏览器的输入是dev.hr.static.baidu.com,这样才能正常访问到你指定的页面
server {
listen 80;
server_name am.dev.baidu.com;
access_log logs/am.baidu.com_nginx.log combined;
index index.html index.jsp index.php; location ^~ /api {
proxy_pass http://127.0.0.1:8081/;#需要代理的地址
include proxy.conf;
} location ^~ / {
root /deploy/www/baidu-www/web-am/;
}
}
这个是需要转发的后端服务,这个路径后面可以带项目名,同样也需要注意server——name
下面是反向proxy.conf的配置
表示使nginx阻止HTTP应答代码为400或者更高的应答
#proxy_intercept_errors on;
proxy_redirect off;
#以下三行,目的是将代理服务器收到的用户的信息传到真实服务器上
#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header Accept-Encoding '';
proxy_set_header Referer $http_referer;
proxy_set_header Cookie $http_cookie; #允许客户端请求的最大单文件字节数
client_max_body_size 10m;
#缓冲区代理缓冲用户端请求的最大字节数
client_body_buffer_size 128k;
#nginx跟后端服务器连接超时时间(代理连接超时)
proxy_connect_timeout 300;
#连接成功后,后端服务器响应时间(代理接收超时)
proxy_read_timeout 900;
#设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffer_size 32k;
#proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
proxy_buffers 4 64k;
#高负荷下缓冲大小(proxy_buffers*2)
proxy_busy_buffers_size 128k;
#设定缓存文件夹大小,大于这个值,将从upstream服务器传
proxy_temp_file_write_size 64k; proxy_send_timeout 900; proxy_hide_header Vary;
最后附上Nginx的重启命令
进入到Nginx的安装目录下的sbin目录,执行./nginx -t 检查Nginx的配置文件是否正确;执行./nginx -s reload 重启服务
nginx 做反向代理的更多相关文章
- nginx做反向代理并防盗链
nginx做反向代理真的非常简单,只需设置location+proxy_pass即可. 防盗链配置有些复杂,需要注意的地方: 在防盗链的location中需要再设置一下proxy_pass(在这里走了 ...
- 用nginx做反向代理来访问防外链图片
用nginx做反向代理来访问防外链图片 女儿的博客从新浪搬到wordpress后,发现原来博客上链接的新浪相册的图片都不能访问了,一年的博客内容,一个个去重新上传图片,修正链接也是个大工程.还是得先想 ...
- 【Nginx】使用Nginx做反向代理时,关于被代理服务器相应的超时设置
> 参考的优秀文章 Module ngx_http_proxy_module > 设置等待被代理服务器的最大响应时间 使用Nginx做反向代理时,因被代理服务器因业务确实复杂,需时较久,往 ...
- Nginx做反向代理总是被系统kill
公司使用Nginx做反向代理,以前都挺正常的,最近不知怎么回事总是无端被系统kill,而在nginx错误日志中也没有信息输出. 网上查了很多资料,也没什么靠谱的回答,唯一觉得有点关联的就是linux ...
- 使用nginx做反向代理
很多同学喜欢用nginx做反向代理访问某些网站,原因大家都懂的,今天老高记录一下如何使用nginx做反向代理以及如何配置和优化nginx的反向代理. 准备工作 首先,你需要一个稳定的国外的便宜的VPS ...
- 利用nginx做反向代理解决前端跨域问题
最近朋友再群里提了一个问题,他们公司给他提供了一个获取数据的接口,在浏览器访问这个接口能获取到json数据,但是放在项目里使用ajax就产生了跨域问题,一般这个需要提供接口的后台方面需要做跨域处理,但 ...
- 转载:Nginx做反向代理和负载均衡时“X-Forwarded-For”信息头的处理
转载自:https://blog.51cto.com/wjw7702/1150225 一.概述 如今利用nginx做反向代理和负载均衡的实例已经很多了,针对不同的应用场合,还有很多需要注意的地方,本文 ...
- wsl 2 unbuntu 部署 asp.net core 使用 nginx 做反向代理,调试文件上传失败
继上一篇 asp.net core 3.1多种身份验证方案,cookie和jwt混合认证授权 的公司内部项目上线后发现文件上传功能有问题. 上传的文件超过50M以后前端就报错了,没有状态返回,也没有响 ...
- nginx做反向代理负载均衡 Java怎么获取后端服务器获取用户IP
nginx做反向负载均衡,后端服务器获取真实客户端ip 首先,在前端nginx上需要做如下配置: location / proxy_set_hearder host ...
- docker配置nginx做反向代理管理tomcat应用
由于业务开始复杂,单一tomcat已经不足以满足业务需求,多tomcat部署起来不方便而且面临域名解析问题,因此开始增加反向代理,由于docker的易用性,便使用docker管理各个应用. docke ...
随机推荐
- PLSQLDeveloper链接报错 解决办法
PLSQL Developer 9.06.1665中文破解版 亲们,win7 64位系统现在还没有PLSQLDeveloper可以使用,但是怎么办呢.好的,下面教大家怎么在64位系统下安装PLSQLD ...
- 判断是否微信浏览器,获取cookie,获取URL来源等
function isWeiXin() { var ua = window.navigator.userAgent.toLowerCase(); if (ua.match(/MicroMessenge ...
- JAVA面试常见问题之Redis篇
Redis为单线程 1.Redis 有哪些数据类型 String 哈希 list set 有序set 2.Redis 内部结构 参考:https://www.cnblogs.com/chenpingz ...
- Hosts 广告
# 百度 127.0.0.1 cpro.baidustatic.com 127.0.0.1 dup.baidustatic.com 127.0.0.1 hm.baidu.com 127.0.0.1 i ...
- ajax请求数据以及处理
html <div class="list-block media-list mp0 mbb" data-infos='infos' style="display: ...
- Node.js Error: Cannot find module express的解决办法(转载)
1.全局安装express框架,cmd打开命令行,输入如下命令: npm install -g express express 4.x版本中将命令工具分出来,安装一个命令工具,执行命令: npm in ...
- loading遮罩
.loading{ position: relative; cursor: default; point-events: none; text-shadow: none!important; colo ...
- Connection reset问题,INFO: I/O exception (java.net.SocketException) caught when processing reques
困扰我多年的Connection reset问题 第一次出现:是thrift的python client去请求server,发现偶尔出现这个问题 第二次:接入第三方的api,去请求数据时,发现一个接入 ...
- P3303 [SDOI2013]淘金
题目描述 小Z在玩一个叫做<淘金者>的游戏.游戏的世界是一个二维坐标.X轴.Y轴坐标范围均为1..N.初始的时候,所有的整数坐标点上均有一块金子,共N*N块. 一阵风吹过,金子的位置发生了 ...
- wordpress设置一个特定的页面作为首页
首先在"页面"里新建一个页面,比如标题为"welcome"; 然后在设置里找到"阅读",首页显示调整为"一个静态页面", ...