以实际的WebGIS例子探讨Nginx的简单配置

文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

1.背景

以实际项目中的一个例子来详细讲解Nginx中的一般配置,其中涉及到部分正则表达式的内容。在这个实际例子中,我们要做的是使用Nginx为WebGIS中常用的离散瓦片做一个伺服器。关于Nginx的下载、与tomcat的组合配置、测试例子可以参考我的上一篇博客http://www.cnblogs.com/naaoveGIS/p/5478208.html

2.Nginx中的简单配置

2.1配置一般代理路径

让Nginx监听8010端口,一般情况下均转发到localhost:8080端口下。

2.2 配置瓦片资源代理路径

包含GISV14,以png等结尾的请求均在ROOT文件夹下寻找资源。

切记,此时需要将所有瓦片也转移到该文件夹下:

2.3 增加过滤配置

以上配置对所有png结尾的请求均作了代理转发地址。但是很多样式文件中的png图片也被转发了,这里需要做一个过滤进行规避:

即GISV14/library/的请求还是转发至localhost:8080下。

2.4检查Nginx的配置后重新加载

正确后,则重新加载配置。

3.结果展示

下图为前端展示效果:

其后台瓦片资源请求如下:

4.Nginx中的常见正则表达式

Linux环境下,要使用nginx提供的正则表达式名字,那么在编译安装nginx时必须首先安装Perl编程语言正则表达式(PCRE)。

4.1常见规则

~ 区分大小写匹配。

~* 不区分大小写匹配。

!~和!~*分别为区分大小写不匹配及不区分大小写不匹配。

^ 以什么开头的匹配。

$ 以什么结尾的匹配。

. 匹配除换行符 \n之外的任何单字符。要匹配 .,请使用 \。

* 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。

? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。

+ 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。

4.2注意

a.为了使用正则表达式,在服务器名字开始之前使用一个波浪号字符“~”,否则,就会被作为准确的名字来对待。

b.如果在表达式中包含一个星号(*),那么就会被作为一个通配符名字(最有可能成为无效的名字)。

c.不要忘记设置锚符号“^” 和“$”,它们不需要在语法,而是在逻辑上。

d.在域名中的点号“.”要使用反斜线进行转义。

5.location中配置的匹配顺序

如图,我们在config中配置了两个匹配路径,那么当路径为/GISV14/library/test.png这种情况下,哪个匹配路径的优先级更高呢?

这里我先给出匹配顺序的规则:

a.标识符“=”的location会最先进行匹配,如果请求uri匹配这个location,将对请求使用这个location的配置。
b.进行字符串匹配,如果匹配到的location有^~这个标识符,匹配停止返回这个location的配置。
c.按照配置文件中定义的顺序进行正则表达式匹配。最早匹配的location将返回里面的配置。
d.如果正则表达式能够匹配到请求的uri,将使用这个正则对应的location,如果没有,则使用第二条匹配的结果。

根据规则中的b、c两个规则,都是指向转发tomcat服务器这个配置。

6.其他相关知识

6.1 逻辑关键字

Nginx中还包含了其他关键字,可以进行一定的程序化逻辑判断。比如包含了:if、break、rewrite,redirect等。这里贴出一个例子:

6.2全局变量

$args
$content_length
$content_type
$document_root
$document_uri
$host
$http_user_agent
$http_cookie
$limit_rate
$request_body_file
$request_method
$remote_addr
$remote_port
$remote_user
$request_filename
$request_uri
$query_string
$scheme
$server_protocol
$server_addr
$server_name
$server_port
$uri

-----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

时间: 2024-11-04 16:09:25

以实际的WebGIS例子探讨Nginx的简单配置的相关文章

Nginx之二:nginx.conf简单配置(参数详解)

vim /usr/local/nginx/conf/nginx.conf #user  nobody; #程序运行使用账户 worker_processes  1; #启动的进程,通常设置成和cpu的数量相等 #全局错误日志级PID文件 #error_log  logs/error.log; #error_log  logs/error.log  notice; #error_log  logs/error.log  info; #pid        logs/nginx.pid; event

初识Nginx,简单配置实现负载均衡(ubuntu + Nginx + tomcat)

工作需要,研究了一下Nginx的反向代理实现负载均衡,网上搜了一下教程,大多含糊不清,所以写下这个,权当总结,方便日后查看,如果能恰好帮到一些需要的人,那就更好了 先说需求,域名指向搭建了Nginx的服务器A,然后由A负载均衡到装有tomcat的服务器B和服务器C(不知道“由A负载均衡到B.C”这种说法对不对) 先说环境: 服务器ABC均为优麒麟(ubuntukylin)14.04 服务器A装有Nginx1.6.3 服务器B.C使用tomcat6 准备工作: 1.设置服务器A的IP为192.16

图文解说,初识Nginx,简单配置实现负载均衡(ubuntu + Nginx + tomcat)

工作需要,研究了一下Nginx的反向代理实现负载均衡,网上搜了一下教程,大多含糊不清,所以写下这个,权当总结,方便日后查看,如果能恰好帮到一些需要的人,那就更好了 先说需求,域名指向搭建了Nginx的服务器A,然后由A负载均衡到装有tomcat的服务器B和服务器C(不知道“由A负载均衡到B.C”这种说法对不对) 先说环境: 服务器ABC均为优麒麟(ubuntukylin)14.04 服务器A装有Nginx1.6.3 服务器B.C使用tomcat6 准备工作: 1.设置服务器A的IP为192.16

windows下nginx+php简单配置

Nginx+php运行环境搭建 虽然目前nginx使用很广泛,在大陆主流的互联网站点或多或少会用到这个俄国人开发的小应用(占用资源小).但是我这个土鳖还是第一次自己独立配置,网上资料不少,但是还是遇到了些问题. 第一步,下载nginx和php.由于mysql已经在本机安装,就没有再重新安装mysql.安装mysql应该没什么问题,在其他开发环境的配置中也会使用,一般都很熟练了,也就不提mysql的安装和配置云云. Php在之前的测试环境中曾经下载过.我使用的版本是php5.2.14:nginx下

uwsgi+nginx 的简单配置

先在 项目的根目录下 新建一个uwsgi.ini的文件(名字可以改) uwsgi 配置 [uwsgi] socket=外网ip:端口(使用nginx连接时,使用socket) http=外网ip:端口(直接做web服务器,使用http) chdir=项目根目录 wsgi-file=项目中wsgi.py文件的目录,相对于项目根目录 processes=4 threads=2 master=True pidfile=uwsgi.pid daemonize=uswgi.log 简单配置具体文件: [u

nginx.conf简单配置

前言: 最简单的nginx.conf配置文件,纯干货,不解释! 主配置文件 [[email protected] application]# cat nginx/conf/nginx.conf worker_processes  1; error_log  logs/error.log error; events {     worker_connections  1024; } http {     include       mime.types;     default_type  app

nginx 的简单配置(虚拟主机、来源控制、https)

Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP服务器Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行,其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,其将源代码以类BSD许可证的形式发布,因它的稳定性.丰富的功能集.示例配置文件和低系统资源的消耗而闻名 Nginx作为负载均衡服务器:

关于https工程的简单nginx的简单配置

1.下载域名的ssl证书,由于项目部署在阿里云上,就用了阿里推荐的赛门铁克,用Let's Encrypt的也不错. 2.nginx的配置如下: worker_processes 8; error_log error.log; events { worker_connections 1024; } http{ server_tokens off; include mime.types; default_type application/octet-stream; log_format main '

【Nginx】简单配置Nginx代理

1.下载Nginx.解压到某个地方 2.常用命令讲解 nginx -t:检查nginx.conf文件是否配置正确 nginx -s reload:重新加载配置文件,每次修改配置文件后reload一下. 关闭:nginx -s stop    或者    nginx -s quit 3.解决nginx.pid报错 执行:nginx -c 配置文件路径,会自动在文件nginx.pid中生成pid 之后就正确咯. 4.启动 start ngnix 出现闪退,  原因:80端口被占用 查看下80端口使用