Linux深入篇之一:配置Nginx Web服务器及多域名主机

一、Nginx简介

nginx [engine x]是Igor Sysoev编写的一个HTTP和反向代理服务器,另外它也可以作为邮件代理服务器。 它已经在众多流量很大的俄罗斯网站上使用了很长时间,这些网站包括Yandex、Mail.Ru、VKontakte,以及Rambler。

据Netcraft统计,在2012年8月份,世界上最繁忙的网站中有11.48%使用Nginx作为其服务器或者代理服务器。目前互联网主流公司360、百度、新浪、腾讯、阿里等都在使用nginx作为自己的web服务器。

Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location blocklocation是Nginx配置中的一个指令,用于URL匹配),而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作

Nginx相对于Apache优点:

1)     高并发响应性能非常好,官方Nginx处理静态文件并发5w/s次并发连接数

2)     反向代理性能非常好。(可用于负载均衡)

3)     内存和cpu占用率低。(为Apache的1/5-1/10)

4)     功能较Apache少(常用功能均有)

      5)对php可使用cgi方式和fastcgi方式。

附:Nginx反向代理负载均衡动静分离系统的架构图:

wKiom1XDc7mBctiJAANuS6ZUsFo402.jpg
二、配置Nginx Web

1、先需要安装pcre库

安装pcre支持rewrite库,也可以安装源码,注*安装源码时,指定pcre路径为解压

源码的路径,而不是编译后的路径,否则会报错

(make[1]: *** [/usr/local/pcre/Makefile] Error 127 错误)

yum install pcre-devel pcre -y

yum -y install openssl openssl-devel

yum install gcc-c++ -y

2、下载Nginx源码包

cd /soft/

wget -c  http://nginx.org/download/nginx-1.6.3.tar.gz

3、解压Nginx源码包

tar -xzf nginx-1.6.3.tar.gz

4、新建用户:useradd www 

5、预编译Nginx

./configure  --user=www  --group=www  --prefix=/usr/local/nginx  --with-http_stub_status_module  --with-http_ssl_module;echo $?

注:--with-http_stub_status_module:表示可以查看到当前Nginx的连接数;

6、.configure预编译成功后,执行make命令进行编译和安装:

make   && make install;echo $?

自此Nginx安装完毕!

7、检查nginx配置文件是否正确,返回OK即正确!

/usr/local/nginx/sbin/nginx -t 

wKioL1XDbk-jsEf_AACpmet3REw126.jpg

8、启动nginx:/usr/local/nginx/sbin/nginx 或者

/usr/local/nginx/sbin/nginx  -s reload 平滑重启

9、查看进程是否已启动:

[root@localhost ~]# ps -ef |grep nginx

wKioL1XDbv3CrBrcAAENIErGJ74893.jpg

10、停止nginx进程:

wKioL1ZD_7Ljxlg2AAA8HQVKtQ0248.png

wKiom1ZD_2iCQ_lhAABcHmI2tMo467.png

10、打开首页:

wKiom1XDbbSDEhrNAAE5sTd24PI808.jpg

11、nginx目录

配置文件目录: /usr/local/nginx/conf/nginx.conf

主发布目录: /usr/local/nginx/html/

启动命令:/usr/local/nginx/sbin/nginx

日志目录:/usr/local/nginx/logs

12、修改默认的发布页面为:vi  /usr/local/nginx/html/,被修改过的测试页面效果:

wKiom1XqiPfBiB0KAAEM-Qpt1Cs182.jpg

13、配置文件

查看配置文件(过滤#和空格部分):

wKiom1XqimbSEj_PAAGAlaUhWUg329.jpg

将过滤后的文件导入到新的配置文件nginx01.conf,将原始配置文件备份为nginx_bak.conf,最后将过滤后的文件复制到nginx.conf:

wKioL1XqjI2RXppNAAHxfW4aKt0388.jpg


 

三、配置Nginx多域名主机

方法1:直接在主配置文件中添加多域名主机

访问这两个测试页面:

再将首页面修改成自定义的页面,测试并重启nginx服务:

/usr/local/nginx/sbin/nginx -t

/usr/local/nginx/sbin/nginx -s reload

打开测试页面:

再使用ip来访问:访问到的是第一个虚拟主机的页面!

将第一个虚拟主机的页面移走,再次用ip访问来测试打开的页面:

这页面表示:没有访问权限,或者访问目录不存在!

这种情况下就无法访问到第二个虚拟主机的页面!

方法2:在Nginx主配置中调用,单独配置的vhost文件

将虚拟主机配置文件独立:

wKiom1XqjAeCDDVIAAFMskDc2RE594.jpg

1、定义vhosts.conf

wKiom1Xqkkux8HsKAACtCuFHktE061.jpg

2、定义nginx.conf文件

wKioL1XqlAeCawbOAAGAJVJBWgQ368.jpg

3、定义本地hosts文件

wKioL1XqlO3QlvrgAAMkcOaxctI436.jpg

4、配置多个虚拟主机的发布目录、重启nginx服务,打开测试页面:

wKiom1Xqk0yiD3MxAASJfRtdJ-4390.jpg

 

四、修改版本号

Nginx当前的版本号为1.6.3

wKioL1XafFWjXNetAABZUKD7ETg736.jpg

输入不存在访问页面时,会出现Nginx的版本号

wKioL1Xaeg6jr5_FAAGMEAcSqTs360.jpg

可以将Nginx的版本号隐藏Nginx的版本号

进入解压目录:

cd nginx-1.6.3

vim src/core/nginx.h

wKiom1XaeH-hh7LVAAFHEOoEtiI288.jpg

然后sed修改Nginx版本信息为:WS

sed -i -e 's/1.6.3//g' -e 's/nginx\//WS/g' -e 's/"NGINX"/"WS"/g' src/core/nginx.h

wKiom1XagByQLUN2AAFQlu5nkUA360.jpg

再次查看当前的版本号:

wKiom1XdLbXhJVRqAAGU5HueGw4727.jpg