文档章节

nginx反向代理配置

 行者终成事
发布于 2019/12/08 02:29
字数 1072
阅读 84
收藏 0

nginx配置文件位置/usr/local/nginx/conf/nginx.conf

配置文件修改:
# cd /usr/local/nginx/conf
# vim nginx.conf

server {
	listen       80;
	server_name  localhost;

	#charset koi8-r;

	#access_log  logs/host.access.log  main;

	location / {
		root   html;
		index  index.html index.htm;
	}
}

 改为:

server {
	listen       80;
	server_name  nginx的ip地址;

	#charset koi8-r;

	#access_log  logs/host.access.log  main;

	location / {
		root   html;
		proxy_pass tomcat的ip地址;
		index  index.html index.htm;
	}
}

# /usr/local/nginx/sbin/nginx -s reload

配置另一个虚拟主机:

server {
	listen       9001;
	server_name  nginx的ip地址;

	location ~ /edu/ {
		proxy_pass 	tomcat1的ip地址:端口1;
	}
	location ~ /vod/ {
		proxy_pass 	tomcat2的ip地址:端口2;
	}
}

配置文件包含三部分内容
(1)全局块:配置服务器整体运行的配置指令 比如 worker_processes  1;处理并发数的配置,值越大处理的并发量越大
(2)events 块:影响 Nginx 服务器与用户的网络连接 比如 worker_connections  1024; 支持的最大连接数为 1024 
(3)http 块 还包含两部分: http 全局块 server 块

当我们通过hosts文件指定IP与域名的对应关系(如:10.10.124.120   www.test.com)之后,对域名的访问会映射成对应的IP,这个ip就是nginx的公网IP 。
请求头携带了Host,因此不同的域名会通过请求头中的HOST字段,由此nginx必定会拿它做uri匹配工作,匹配到特定的server块,转发到对应的应用服务器中去。

server_name与host匹配优先级如下:
1、完全匹配
2、通配符在前的,如*.test.com
3、在后的,如www.test.*
4、正则匹配,如~^\.www\.test\.com$
如果都不匹配
1、优先选择listen配置项后有default或default_server的
2、找到匹配listen端口的第一个server块

location区段
通过指定模式来与客户端请求的URI相匹配,基本语法如下:location [=|~|~*|^~|@] pattern{……}
1、没有修饰符 表示:必须以指定模式开始
2、=表示:必须与指定的模式精确匹配
3、~ 表示:指定的正则表达式要区分大小写
4、~* 表示:指定的正则表达式不区分大小写
5、^~ 类似于无修饰符的行为,也是以指定模式开始,不同的是,如果模式匹配,那么就停止搜索其他模式了。
6、@ :定义命名location区段,这些区段客户段不能访问,只可以由内部产生的请求来访问,如try_files或error_page等

查找顺序和优先级
1:带有“=“的精确匹配优先
2:没有修饰符的精确匹配
3:正则表达式按照他们在配置文件中定义的顺序
4:带有“^~”修饰符的,开头匹配
5:带有“~” 或“~*” 修饰符的,如果正则表达式与URI匹配
6:没有修饰符的,如果指定字符串与URI开头匹配

root 、alias指令区别
alias是一个目录别名的定义,root则是最上层目录的定义。

Location区段匹配示例

location = / {
  # 只匹配 / 的查询.
  [ configuration A ]
}
location / {
  # 匹配任何以 / 开始的查询,但是正则表达式与一些较长的字符串将被首先匹配。
  [ configuration B ]
}
location ^~ /images/ {
  # 匹配任何以 /images/ 开始的查询并且停止搜索,不检查正则表达式。
  [ configuration C ]
}
location ~* \.(gif|jpg|jpeg)$ {
  # 匹配任何以gif, jpg, or jpeg结尾的文件,但是所有 /images/ 目录的请求将在Configuration C中处
  理。
  [ configuration D ]
} 各
请求的处理如下例:
■/ → configuration A
■/documents/document.html → configuration B
■/images/1.gif → configuration C
■/documents/1.jpg → configuration D

负载均衡配置
分配策略:
第一种 轮询(默认): 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
第二种 weight: weight 代表权重默认为 1,权重越高被分配的客户端越多 
第三种 ip_hash: 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器 
第四种 fair(第三方): 按后端服务器的响应时间来分配请求,响应时间短的优先分配。 

upstream myserver {
	ip_hash
	server tomcat1的ip地址:端口1;
	server tomcat2的ip地址:端口2;
}
server {
	listen       80;
	server_name  nginx的ip地址;
	
	location / {
		proxy_pass 	http://myserver;
		root   html;
		index  index.html index.htm;
	}
}

 

© 著作权归作者所有

下一篇: nginx常用命令
粉丝 0
博文 68
码字总数 32672
作品 0
杭州
程序员
私信 提问
加载中

评论(0)

用nginx TCP反向代理作mail邮件代理

用nginx TCP反向代理作mail邮件代理 用nginx TCP反向代理作mail邮件代理 1. 背景 新版本nginx有TCP反向代理功能,nginx的mail proxy配置认证又太麻烦,于是就想用TCP反向功能作mail代理。 2....

ygqygq2
2017/08/22
0
0
Nginx代理服务器使用阿里云文件存储NAS

Nignx应用场景 Nginx 是一个很强大的高性能Web和代理服务,它具有很多非常优越的特性。反向代理应该是 Nginx一种最常见的应用模式。 反向代理(Reverse Proxy)方式是指以代理服务器来接受 ...

曜斯
2019/02/25
0
0
Nginx反向代理并替换内容模块ngx_http_substitutions_filter_modu

====== 以前写过Nginx反向代理通过with-httpsubmodule和substitutions4nginx模块替换正文内容和URL和在军哥lnmp的环境下配置反向代理服务器的方法教程 本教程基于军哥lnmp环境,其他Nginx类同...

adbug
2016/02/16
2.4K
0
nginx 入门、安装与简单使用

本文内容: 1. nginx 简介 2. nginx 安装 3. nginx 简单使用 一、Nginx 的三大功能 1.HTTP服务器 Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML、图片)通过HTTP协议展现给客户端...

辣妈程序媛
2018/03/11
104
0
.NET Core容器化之多容器应用部署@Docker-Compose

1.引言 紧接上篇.NET Core容器化@Docker,这一节我们先来介绍如何使用Nginx来完成.NET Core应用的反向代理,然后再介绍多容器应用的部署问题。 2. Why Need Nginx .NET Core中默认的Web Ser...

圣杰
2017/12/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

laravel 多条件查询 闭包写法

laravel 多条件查询 闭包写法 直接上代码 1: 比如我要查询 符合条件的 部门和 用户 DB::table('user')->where('user_id',20)->whereIn('d_id',[82,83])->get(); 可以使用下面这种方法替换 ......

李佳顺
22分钟前
21
0
springboot实现热部署

一、前言 在实际开发过程中,每次修改代码就得将项目重启,重新部署,对于一些大型应用来说,重启时间需要花费大量的时间成本。对于一个后端开发者来说,重启过程确实很难受。在java开发领域...

素小暖OSC
23分钟前
98
0
为什么要选择开源的直播源码开发直播系统?

相信大家在购买直播源码的过程中,肯定都会咨询过是否开源这个问题。对于懂技术的人来说,开源的意思非常好理解,而对于不懂技术的人来说,开源可能是个非常难以理解的词汇。在这里跟大家简单...

图玩智能科技
25分钟前
26
0
真的在Windows中杀死一个进程

偶尔,Windows机器上的程序会发疯,只是挂起。 所以我将调用任务管理器并点击“结束进程”按钮。 但是,这并不总是有效; 如果我尝试了足够多次,那么它通常会最终死亡,但我真的希望能够立即...

技术盛宴
29分钟前
56
0
使用低代码平台 - 危险的赌注

低代码应用平台(LCAP - low code application platforms)在多样、复杂的现代软件开发情势下应运而生。依据Gartner(高德纳,全球最具权威的IT研究与顾问咨询公司)的数据,Mendix 是这方面...

CUBAChinaTeam
30分钟前
46
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部