Centos7.4安装Nginx及优化(一)

前端之家收集整理的这篇文章主要介绍了Centos7.4安装Nginx及优化(一)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发.
Nginx以事件驱动(epoll)的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。但是Nginx不支持cgi方式运行,原因是可以减少因此带来的一些程序上的漏洞。所以必须使用FastCGI方式来执行PHP程序。
由于Nginx本身的一些优点,轻量,开源,易用,越来越多的公司使用Nginx作为自己公司的web应用服务器,本文详细介绍Nginx源码安装的同时并对Nginx进行优化配置。


为什么要选择Nginx

Nginx 是一个高性能的 Web 和反向代理服务器,它具有有很多非常优越的特性:

作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。能够支持高达 50,000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型.

作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服务。Nginx 用 C 编写,不论是系统资源开销还是 cpu 使用效率都比 Perlbal 要好的多。

作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。

Nginx 安装非常的简单,配置文件 非常简洁(还能够支持perl语法),Bugs非常少的服务器: Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在 不间断服务的情况下进行软件版本的升级


如何选择Nginx版本?


Nginx的英文官方网站是:http://www.Nginx.org/在这里我们可以直接查看Nginx的各个版本号。Nginx的软件有三种版本:稳定版,开发板,和历史稳定版。开发板更新的较快,包含最近的功能和BUG修复,但同时也可能会遇到新的BUG,开发板的更新一旦稳定下来就会被纳入稳定版中。稳定版更新的较慢,但是软件的BUG会很少,可以作为企业的首选,因此通常建议使用稳定版。当然在实际工作中,选择稳定版时,尽量避免使用最新的版本,选择比已出来的最近版晚6-10个月的版本比较好。在本章我们选择1.12.2稳定版本


Nginx的安装非常简单,具体的操作如下:


1)检查并安装Nginx基础依赖包pcre-devel openssl-devel


名称中带有"devel"字符串的软件包是必须要安装的

2)安装pcre-devel以及openssl-devel

[root@yankerp ~]# yum install -y openssl-devel pcre-devel

3)开始安装Nginx操作命令如下:

[root@yankerp ~]# mkdir -p /home/yankerp/tools
-p选项表示不提示目录是否存在,循环的向下创建所有的层级目录,如果存在就忽略。

[root@yankerp ~]# cd /home/yankerp/tools/
进入/home/yankerp/tools目录

[root@yankerp tools]# wget http://Nginx.org/download/Nginx-1.12.2.tar.gz
下载软件包,进入http://Nginx.org/download/复制对应版本的下载链接地址

[root@yankerp tools]# ls -l Nginx-1.12.2.tar.gz 
-rw-r--r--. 1 root root 981687 10月 17 21:20 Nginx-1.12.2.tar.gz
[root@yankerp tools]# useradd -M -s /sbin/nologin Nginx
[root@yankerp tools]# tar zxf Nginx-1.12.2.tar.gz 
[root@yankerp tools]# cd Nginx-1.12.2/


在我们编译安装前我们可以隐藏Nginx软件名称以及版本号如下:

[root@yankerp Nginx-1.12.2]# pwd
/home/yankerp/tools/Nginx-1.12.2
[root@yankerp Nginx-1.12.2]# vim src/core/Nginx.h 




修改HTTP头信息中的connection字段,防止回显具体版本号

[root@yankerp Nginx-1.12.2]# vim src/http/ngx_http_header_filter_module.c 




有时候我们页面程序出现错误Nginx会代我们返回相应的错误代码,回显的时候,会带上Nginx和版本号,我们把他隐藏起来

[root@yankerp Nginx-1.12.2]# vim src/http/ngx_http_special_response.c 



以上修改完成后正式安装如下:


./configure --prefix=/usr/local/Nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-pcre --with-http_ssl_module --with-http_gzip_static_module --user=Nginx --group=Nginx
make && make install



--with-http_dav_module #增加PUT,DELETE,MKCOL:创建集合,COPY和MOVE方法
--with-http_stub_status_module #获取Nginx的状态统计信息
--with-http_addition_module #作为一个输出过滤器,支持不完全缓冲,分部分相应请求
--with-http_sub_module #允许一些其他文本替换Nginx相应中的一些文本
--with-http_flv_module #提供支持flv视频文件支持
--with-http_mp4_module #提供支持mp4视频文件支持,提供伪流媒体服务端支持
--with-http_ssl_module #启用ngx_http_ssl_module

安装完成后的优化:

[root@yankerp Nginx-1.12.2]# ln -s /usr/local/Nginx/sbin/Nginx /usr/local/sbin/

启动Nginx

Nginx
[root@yankerp Nginx-1.12.2]# netstat -anput | grep Nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      42330/Nginx: master 


此时Nginx服务正式安装完成,我们开放80端口,在windows打开浏览器输入http://192.168.xx.xx也就是Nginx服务器的IP地址如果看到以下图片,就表示Nginx已经启动了。

开放80端口


windows访问测试:



测试是否隐藏了版本和软件名


以上图中证明我们修改成功,再次测试返回错误的信息,如下:


Nginx的配置优化



[root@yankerp Nginx-1.12.2]# ps -ef | grep Nginx
root 42347 1 0 14:26 ? 00:00:00 Nginx: master process Nginx
Nginx 42348 42347 0 14:26 ? 00:00:00 Nginx: worker process

在这里我们还可以看到在查看的时候,work进程是Nginx程序用户,但是master进程还是root,其中,master是监控进程,也叫主进程,work是工作进程,部分还有cache相关进程,关系如图:


可以直接理解为master是管理员,work进程才是为用户提供服务的!


Nginx运行工作进程个数,一般我们设置为cpu核心或者核心数x2

如果不了解cpu的核数,我们可以使用top命令来查看,之后在按1就可以看出来,同时也可以查看/etc/cpuinfo/文件,这里我就用top命令了如下:


这里我有四核那么我们修改Nginx主配置 Nginx.conf文件

Nginx运行cpu亲和力,比如四核:


worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000

八核如下:

worker_processes 8;

worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 1000000


worker_processes最多开启8个,8个以上性能提升不会再提升了,而且稳定性变得更低,所以8个进程够用了。


[root@yankerp Nginx-1.12.2]# vim /usr/local/Nginx/conf/Nginx.conf


修改完成后重新加载Nginx配置文件查看,如下:



设置Nginx最多打开的文件

worker_rlimit_nofile 65535;

这个指令是指当一个Nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与Nginx进程数相除,但是Nginx分配请求并不是 那么均匀,所以最好与ulimit -n的值保持一致。

文件资源限制的配置可以在/etc/security/limits.conf设置,针对root/user等各个用户或者*代表所有用户来设置。
* soft nofile 65535
* hard nofile 65535

用户重新登录生效(ulimit -n)


[root@yankerp conf]# vim /etc/security/limits.conf




[root@yankerp ~]# vim /usr/local/Nginx/conf/Nginx.conf



(2) Nginx事件处理模型
events {
use epoll;
worker_connections 65535;
multi_accept on;

}
Nginx采用epoll事件模型,处理效率高
work_connections是单个worker进程允许客户端最大连接数,这个数值一般根据服务器性能和内存来制定,实际最大值就是worker进程数乘以work_connections
实际我们填入一个65535,足够了,这些都算并发值,一个网站的并发达到这么大的数量,也算一个大站了!
multi_accept 告诉Nginx收到一个新连接通知后接受尽可能多的连接



2017年倒计时!!!

希望对您有所帮助,再见~







猜你在找的CentOS相关文章