Nginx的使用
来源:互联网 发布:ibm linux 编辑:程序博客网 时间:2024/05/29 18:10
本来Nginx是可以放到linux环境配置中的,但是为什么单独开一篇呢?
因为它有点重要,有多重要呢?
看着看着你就知道了。
Nginx介绍
Nginx 是一个很强大的高性能 Web和 反向代理服务器
这里不得不提一下反向代理这个概念,提到反向代理,就肯定有正向代理,我们就看一下这两者的区别。
最后简单的总结如下:
1.正向代理的时候,服务端不知道真正的客户端是谁,因为客户端的请求都由代理服务器发送。
2.而反向代理正好相反,客户端不知道处理它请求的真正服务器是哪个,因为反向代理服务器会把请求发送到真实服务器去。
如果你有特地去了解Nginx都能干什么的话,你就会发现Nginx好像能干好多东西啊,比如防盗链,日志监控,静态资源服务器,反向代理服务器,负载均衡等,这些只是一些常用的功能。
本文主要介绍静态资源服务器,反向代理服务器,负载均衡这几种用法,其他内容暂不涉及。
当然在讲这些内容之前,肯定没办法跳过这个
Nginx的安装
这个我就直接用现成的了。Linux安装Nginx
Windows下就更简单了,直接下个zip压缩包,解压即用。
启动Nginx的命令是 ./nginx -c ../conf/nginx.conf
要配合配置文件一起启动。
也可以使用./nginx -h
查看命令帮助
Nginx的配置
进入Nginx文件路径/conf,然后对nginx.conf文件进行编写。
这里我们首先修改一下Nginx的日志格式,方便我们进行日志统计。
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$request_time $request_length ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$upstream_addr" "$http_x_forwarded_for"';
简单的讲一下各个字段都是什么含义吧。 $remote_addr
——远程客户端IP地址 $remote_user
——记录客户端用户名称 $time_local
——记录访问时间 $request
——记录请求的URL和HTTP协议 $request_time
——整个请求的总时间 $request_length
——记录请求长度(包括请求行,请求头,请求体) $status
——记录请求状态 $body_bytes_sent
——记录发送给客户端文件内容大小 $http_referer
——记录从哪个页面链接访问过来的 $http_user_agent
——记录客户端浏览器相关信息 $upstream_addr
——upstream地址,即真正提供服务的主机地址 $http_x_forwarded_for
——客户端的真实ip
通常web服务器放在反向代理的后面,就不能获取客户的ip了,通过$remote_addr
拿到的ip是反向代理服务器的ip地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for
信息,用以记录原有客户端的ip和原来客户端的请求的服务器地址。
之后的对于Nginx的配置也都是在这个文件中进行配置。
每次修改完配置文件后,都应该使用命令重启Nginx。
在Nginx路径下/sbin ./nginx -s reload
接下来进入正文
静态资源服务器
此时需要配置Server块,所以我们回到之前的nginx.conf文件中。
我们看如下配置:
server { listen 80; server_name localhost; location / { root D:\www; index index.html index.htm; } location /images/ { root D:\image; autoindex on; }}
这里每个字段的意思是:
listen:监听的端口
server_name:你的IP或域名,自己随便取名是不允许的!(除非你使用的是子域名,但子域名已经在hosts文件中进行了相关配置,不然也是不可以的)
location块:该处是一个定位的功能,比如上面的代码中,/代表所有url的匹配,root定义的是本地的资源包,index定义的是导航页面;下面的代码是匹配/images/的url,如localhost/images/1.jpg,autoindex进行自动匹配资源。
这样一个静态服务是配好了,但是问题来了,我的服务访问自己定义的index.htm页面没问题,但是访问静态资源图片时就出现404错误。
问题的关键在于关键字root和alias的区别:附链接http://blog.csdn.net/line_aijava/article/details/71473793
正确的代码块应该是
location /images/ { alias D:\image\; autoindex on;}
这里那个alias后的\不能少
这里的意思就是,如果我使用root访问源文件夹,那么Nginx请求会有一个拼接的过程
比如我打出的url为http://localhost/image/1.jpg
关键字为root的请求为http://localhost\image/image/1.jpg
而使用alias关键字后,请求的url就是http://localhost/image/1.jpg
这样一个简单的静态资源配置就完成了,如果想要涉及复杂一点的,可能会涉及到正则表达式,所以内容还蛮多的。
反向代理服务器
这里再配置一下nginx.conf
server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://localhost:8080; root html; index index.html index.htm; }}
这部分代码的含义就是监听80端口,然后反向代理的是本地的8080端口。
起关键作用的一句是proxy_pass http://localhost:8080;
负载均衡
什么是负载均衡呢?
说白了,就是我们配置了多台服务,然后提升性能的一种方式,只要还有某个服务还在运作,我们就还可以正常访问服务;同时这也是一种缓解服务压力的方法,当大批量请求过来的时候,我们可以通过负载均衡将请求分发,以此缓解压力。
看一下如何配置
upstream mytest{ server ip:8080; server ip:8090; } server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://mytest; root html; index index.html index.htm; } }
使用upstream
代表负载均衡的分发块。然后在proxy_pass
这个代理处填上http://your-upstream-name;
。至此负载均衡就配置完成了。
负载均衡有几种策略,常用的有:轮询(比如我上面的举例);权重(在我上面的举例中,对每一个分发服务器加上关键字weight
,后面跟上数字,然后就是简单的数学问题了);ip_hash等。
然后upstream中还有不少的关键字,代表每台设备的状态,整理如下:
down 表示单前的server暂时不参与负载
weight 默认为1.weight越大,负载的权重就越大。
max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
fail_timeout:max_fails 次失败后,暂停的时间。
backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
对于nginx的介绍暂时先到这里,因为nginx内容广泛,所以本篇内容应该并没有结束,当我学到nginx的其他用法时,再回来续更。
- Nginx的基本使用
- nginx的log使用
- nginx变量的使用
- Nginx的使用入门
- 【nginx】的基本使用
- nginx proxy的使用
- nginx gzip 的使用
- Nginx的使用
- 关于nginx的使用
- nginx的使用
- Nginx的入门使用
- nginx的使用经历
- nginx的使用
- Nginx的简单使用
- nginx的使用
- Nginx的入门使用
- Nginx的使用
- Nginx的 NginxHttpMemcModule的使用
- ajax技术,也是有局限的,不能跨域,即A工程的html页面发起一个ajax请求即http url请求调B工程的action(A和B不在一个域中的),怎么办?解决办法
- 使用typeperf监控系统资源
- Codeforces 145A Lucky Conversion(思维)
- 深度学习之入门
- cdn
- Nginx的使用
- HashMap和HashTable到底哪不同?
- 八大排序算法
- 加减计算器(数电)
- JAVA | 52
- ubuntu安装proxychains及自动补全
- powerdvd 17破解版(极致蓝光播放器)附注册机V17.0.2316.62下载 | cyberlink powerdvd 17
- 创建一个maven项目
- 大数据(三十七)机器学习【机器学习语言---R语言介绍】