标签:数据 正则 zoom 相关 rewrite ogr 反向代理服务器 set 分配
首先,Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML、图片)通过HTTP协议展现给客户端。配置如下:
server { listen 80; # 端口号 location / { root /usr/share/nginx/html; # 静态文件路径 } }
基于端口的虚拟主机,通过端口来区分虚拟主机——应用:公司内部网站,外部网站的管理后台
基于ip的虚拟主机,几乎不用。
#当客户端访问www.eureka.com,监听端口号为80,直接跳转到data/www目录下文件
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name www.eureka.com; location / { root data/www; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
#当客户端访问bbs.eureka.com,监听端口号为80,直接跳转到data/bbs目录下文件 server { listen 80; server_name bbs.eureka.com; location / { root data/bbs; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
#当客户端访问192.168.177.133:8080:,监听端口号为8080,直接跳转到data/www目录下文件
server { listen 8080; server_name 192.168.177.133; location / { root data/www; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
#当客户端访问192.168.177.133:8081:,监听端口号为8081,直接跳转到data/bbs目录下文件 server { listen 8081; server_name 192.168.177.133; location / { root data/bbs; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
#当客户端访问192.168.177.133:8080:,监听端口号为8080,直接跳转到data/bbs目录下文件
server { listen 8080; server_name 192.168.177.133; location / { root data/www; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
#当客户端访问192.168.177.134,监听端口号为8080,直接跳转到data/bbs目录下文件 server { listen 8080; server_name 192.168.177.134; location / { root data/bbs; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。如下图所示:
隐藏真实内部ip地址,请求先访问nginx代理服务器(外网可以访问到),在使用nginx服务器转发到真实服务器中。
#当客户端访问www.eureka.com,监听端口号为80直接跳转到真实ip服务器地址 192.168.177.133:8080 server { listen 80; server_name www.eureka.com; location / { proxy_pass http://192.168.177.133:8080; index index.html index.htm; } }
负载均衡是将所有请求拦截到负载均衡器中,在由负载均衡器采用负载均衡算法(轮询、IP绑定、权重)分发到不同实际的服务器中,这也就是服务器集群, 减轻单台服务器压力。如下图eureka集群示例:
负载均衡英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
#定义上游服务器(需要被nginx真实代理访问的服务器) 默认是轮询机制 upstream eurekaServer{ server 192.168.177.133:8080; server 192.168.177.133:8081;
server 192.168.177.133:8082; } server { listen 80; server_name www.eureka.com; location / { # 指定上游服务器负载均衡服务器 proxy_pass http://eurekaServer; index index.html index.htm; } }
upstream eurekaServer{ server 192.168.177.133:8080 weight=1; server 192.168.177.133:8081 weight=2;
server 192.168.177.133:8082 weight=2; } server { listen 80; server_name www.eureka.com; location / { # 指定上游服务器负载均衡服务器 proxy_pass http://eurekaServer; index index.html index.htm; } }
upstream eurekaServer{ server 192.168.177.133:8080; server 192.168.177.133:8081;
server 192.168.177.133:8082; ip_hash; } server { listen 80; server_name www.eureka.com; location / { # 指定上游服务器负载均衡服务器 proxy_pass http://eurekaServer; index index.html index.htm; } }
(第三方
upstream eurekaServer{ server 192.168.177.133:8080; server 192.168.177.133:8081;
server 192.168.177.133:8082;
fair; } server { listen 80; server_name www.eureka.com; location / { # 指定上游服务器负载均衡服务器 proxy_pass http://eurekaServer; index index.html index.htm; } }
当上游服务器(真实访问服务器),一旦出现故障或者是没有及时相应的话,应该直接轮训到下一台服务器,保证服务器的高可用。配置如下
server { listen 80; server_name www.eureka.com; location / { # 指定上游服务器负载均衡服务器 proxy_pass http://eurekaServer; #nginx与上游服务器(真实访问的服务器)超时时间 后端服务器连接的超时时间_发起握手等候响应超时时间 proxy_connect_timeout 1s; #nginx发送给上游服务器(真实访问的服务器)超时时间 proxy_send_timeout 1s; # nginx接受上游服务器(真实访问的服务器)超时时间 proxy_read_timeout 1s; index index.html index.htm; } }
location指令的作用是根据用户请求的URI来执行不同的应用,也就是根据用户请求的网站URL进行匹配,匹配成功即进行相关的操作。
已=开头表示精确匹配 如 A 中只匹配根目录结尾的请求,后面不能带任何字符串。 ^~ 开头表示uri以某个常规字符串开头,不是正则匹配 ~ 开头表示区分大小写的正则匹配; ~* 开头表示不区分大小写的正则匹配 / 通用匹配, 如果没有其它匹配,任何请求都会匹配到
server { listen 80; server_name www.eureka.com; #精确匹配,注解后面不能带任何字符 location =/ { proxy_pass http://192.168.177.133:8080; index index.html index.htm; } }
server { listen 80; server_name www.eureka.com; #匹配所有以/开头请求 location / { proxy_pass http://192.168.177.133:8080; index index.html index.htm; } }
server { listen 80; server_name www.eureka.com; # 以开头/eureka 最终跳转到http://192.168.177.133:8080/; location /oauth/ { proxy_pass http://192.168.177.133:8080/; index index.html index.htm; } # 以开头/oauth 最终跳转到http://192.168.177.133:8081/; location /oauth/ { proxy_pass http://192.168.177.133:8081/; index index.html index.htm; } }
Nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。rewrite只能放在server{},location{},if{}中,并且只能对域名后边的除去传递的参数外的字符串起作用
ps:Rewrite主要的功能就是实现URL的重写,Nginx的Rewrite规则采用Pcre,perl兼容正则表达式的语法规则匹配,如果需要Nginx的Rewrite功能,在编译Nginx之前,需要编译安装PCRE库。
nginx的rewrite规则就是使用正则匹配请求的url,然后根据定义的规则进行重写和改变,需ngx_http_rewrite_module模块来支持url重写功能,该模块是标准模块,默认已经安装。
变量 |
含义 |
$args |
这个变量等于请求行中的参数,同$query_string |
$content length |
请求头中的Content-length字段。 |
$content_type |
请求头中的Content-Type字段。 |
$document_root |
当前请求在root指令中指定的值。 |
$host |
请求主机头字段,否则为服务器名称。 |
$http_user_agent |
客户端agent信息 |
$http_cookie |
客户端cookie信息 |
$limit_rate |
这个变量可以限制连接速率。 |
$request_method |
客户端请求的动作,通常为GET或POST。 |
$remote_addr |
客户端的IP地址。 |
$remote_port |
客户端的端口。 |
$remote_user |
已经经过Auth Basic Module验证的用户名。 |
$request_filename |
当前请求的文件路径,由root或alias指令与URI请求生成。 |
$scheme |
HTTP方法(如http,https)。 |
$server_protocol |
请求使用的协议,通常是HTTP/1.0或HTTP/1.1。 |
$server_addr |
服务器地址,在完成一次系统调用后可以确定这个值。 |
$server_name |
服务器名称。 |
$server_port |
请求到达服务器的端口号。 |
$request_uri |
包含请求参数的原始URI,不包含主机名,如”/foo/bar.php?arg=baz”。 |
$uri |
不带请求参数的当前URI,$uri不包含主机名,如”/foo/bar.html”。 |
$document_uri |
与$uri相同。 |
## 如果访问的ip地址为192.168.177.133,则返回403 if ($remote_addr = 192.168.177.133) { return 403; }
## 不允许谷歌浏览器访问 如果是谷歌浏览器返回500 if ($http_user_agent ~ Chrome) { return 500; }
标签:数据 正则 zoom 相关 rewrite ogr 反向代理服务器 set 分配
原文地址:https://www.cnblogs.com/kongliuyi/p/11498023.html