qindongliang1922 阅读(28) 评论(0)


### Nginx是什么?

Nginx是俄罗斯人编写的十分轻量级的HTTP和反向代理服务器。发音:"engine X"

### Nginx能干什么?


#### (1)Http反向代理
Nginx 支持正则表达式以区分静态资源或者动态资源,提供性能稳定,并且能够提供配置灵活的转发功能。
,其中动态资源可以进一步转发给后端的 Proxy Server, 而静态资源则可以在 Nginx 层面使用本地缓存策略或者重定向(类 CDN)到其他 Nginx 上。


#### (2)负载均衡





目前Nginx支持以下几种的负载均衡的策略:

1,round-robin(轮询,默认策略)

每个请求轮询发送到不同的服务器上面,如果某台服务宕机了,nginx会自动剔除掉,并把请求给转发到正常的服务器上面。

2,least_conn

最少连接数

3,least_time

最少时间花费,nginx会选择延迟最低的服务器。header表示是计算从后台返回的第一个字节,last_byte计算的是从后台返回的所有数据时间

4,weight

如果服务器性能本身不太均衡,通过配置权重让资源配置更高的机器得到更多的流量

5,ip_hash

使用请求的ip的hash结果分配,这样每个用户会被分配在同一个后台服务器上面

6,fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配

github地址:https://github.com/gnosek/nginx-upstream-fair

7,url_hash(第三方)

基于url的hash进行分配


此外还有一些基于一致性hash和tcp负载的功能,感兴趣的朋友可以自己查阅资料。

#### (3)web缓存

Nginx可以对不同文件做不同的缓存处理,配置灵活,并且支持FastCGI_Cache.

尤其是前端开发的项目中,一些js,css,html,图片,视频,音频等资源可以作为静态资源发布,由nginx缓存以提升响应速度。



#### (4)其他

此外使用Nginx可以做一个简单的http的下载服务器,只要配置开启目录浏览功能即可实现。还有一些权限拦截功能,也可以使用Nginx来完成。



### Nginx的安装

默认的centos是没有nginx的yum源,需要执行下面的命令:

````
rpm -Uvh --force http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

yum install -y nginx
````

安装完成后,一些默认的目录如下:
````
网站默认站点配置的首页
/usr/share/nginx/html

默认的nginx的配置目录
/etc/nginx/conf.d/

默认的目录下面有一个配置模板,如果不需要,可以改后缀名不为conf ,然后重新reload即可
/etc/nginx/conf.d/default.conf

Nginx全局配置,主要的配置选项
/etc/nginx/nginx.conf

默认的访问log
/var/log/nginx/access.log

默认的错误log
/var/log/nginx/error.log

默认的进程id
/var/run/nginx.pid


````


一些常用命令:
````

nginx -V  2>&1 |  tr ' ' '\n' 查看安装的插件

nginx -v 看版本

nginx 启动

nginx -s stop 快速停止

nginx -s reload 重新加载

nginx -t 查看配置文件是否有错误
````




执行nginx启动之后,访问ip的80端口,如果能看见下面的字样,就代表成功:
````
Welcome to nginx!

If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.
````



最后再介绍一个实用的功能,就是编辑nginx的conf文件默认是黑白颜色的,对视觉极其不友好,所以我们需要安装一个支持nginx的conf文件语法高亮的插件:

````
wget http://www.vim.org/scripts/download_script.php?src_id=14376 -O nginx.vim

mkdir -p ~/.vim/syntax

mv nginx.vim ~/.vim/syntax/ 

vim ~/.vim/filetype.vim  

粘贴下面的内容到里面去:

au BufRead,BufNewFile /etc/nginx/*,/usr/local/nginx/conf/* if &ft == '' | setfiletype nginx | endif 


````


最后退出终端,重新登录即可
有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。 技术债不能欠,健康债更不能欠, 求道之路,与君同行。