Nginx作为web服务器的安装配置

(关注官方网站http://nginx.org/

 

Nginx简介

是一个高性能的 HTTP  反向代理服务器,由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler使用。其特性是:1.模块化设计,较好的扩展性(不支持动态装卸载机制)     2.较好的高可靠性3.低内存消耗(一个线程响应多个请求) 4.支持热部署(不停机二更新配置文件、日志文件的滚动、也包括升级程序版本)  5.支持时间驱动机制、异步IOAIO)、内存映射机制(mmap)。

Nginx具有独特的工作模式,它基于非阻塞、事件驱动机制由一个master进程生成多个worker线程,每个worker响应n个请求,基于这种模式,nginx的并发能力在国内外享有很高的评价,特别是响应静态资源的能力尤其突出,是一款强大的HTTP和反向代理服务器。

 

实验准备:

yum:epel

源码包:nginx-1.6.2.tar.gz

本机IP192.168.3.136

 

实验步骤:


一、nginx的编译安装

安装开发环境和pcre-devel包,以及添加nginx组和nginx用户

#yum groupinstall "Development Tools""Server Platform Development" –y
# yum install pcre-devel –y
# groupadd -r nginx
# useradd -r -g nginx nginx

1.    解压nginx安装包至本地目录,然后执行编译、安装

# tar -xf nginx-1.6.2.tar.gz 
#cd nginx-1.6.2
#./configure --prefix=/usr/local/nginx--conf-path=/etc/nginx/nginx.conf --user=nginx --group=nginx--error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log--pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock--with-http_ssl_module --with-http_stub_status_module--with-http_gzip_static_module --with-http_flv_module --with-http_mp4_module--http-client-body-temp-path=/var/tmp/nginx/client--http-proxy-temp-path=/var/tmp/nginx/proxy--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi
              #make && make install
#mkdir -pv/var/tmp/nginx/{client,proxy,fastcgi,uwsgi}

2.    启动nginx,并确保80端口已经监听

# ss -tnl | grep 80 保证80端口此时没被监听
# /usr/local/nginx/sbin/nginx
#ss -tnl | grep 80
LISTEN    0   128      *:80                    *:*


到此nginx的编译安装就已经成功完成了,在浏览器中输入:192.168.3.136,进行测试访问,就出现nginx的的欢迎页面。

                            wKioL1YE792QKhBFAAEei13GohQ698.jpg

 

二、基于端口的虚拟主机的配置

1.    在上面的基础上,编辑配置文件,添加虚拟主机sever{}

#vim /etc/nginx/nginx.conf
……在最http{}里面添加如下内容….
server{  #定义一个虚拟主机
        listen       8080; #指明监听的端口为8080
        server_name  www.vega.ict; #指明服务器的名字
        root "/vhosts/web1/";  #指明主页面文档的根目录
    }

                                                     

2.    创建虚拟主机页面目录,并准备主页面文件

# mkdir /vhosts/web1 –pv
# cd /vhosts/web1/
# vim index.html
…..添加如下内容…..
<h1>page web1(nginx)</h1>

3.重新载入配置文件

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

 

到此我们基于端口的虚拟主机就配置完成了,下面在浏览器进行访问测试,输入192.168.3.136:8080,观察显示结果

wKiom1YE8BeQC1EqAADPbPbGQW8917.jpg

 

 

三、基于用户请求做访问控制的配置

1.    编辑配置文件/etc/nginx/nginx.conf

#vim /etc/nginx/nginx.conf
….将上面server{}段的内容改为如下…..
server {
        listen       8080; #监听8080端口
        server_name  www.vega.ict;  #定义主机名
  #凡是用户的URL带/的就定向至本地文件系统路径:/vhosts/web1/中
        location / {
                root "/vhosts/web1/";
        }
  #凡是用户的URL以.txt结尾的就定向至本地文件系统路径:/vhosts/text/中
        location ~* \.txt$ {
                root "/vhosts/text/";
        }
    }

2.    提供测试页面目录及页面主目录文件

#mkdir /vhosts/text
#vim/vhosts/web1/a.txt
….添加如下内容,….
It is  /vhosts/web1/a.txt
#vim/vhosts/text/a.txt
….添加如下内容,….
It is  /vhosts/text/a.txt


3.    重新载入配置文件,并进行相应测试

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

 

在浏览器中测试访问,分别输入:http://192.168.3.136:8080/a.txt,之所以是访问的/vhosts/text/a.txt是因为~*location的优先级高于不带任何符号的location,所以就被定向至/vhosts/text/a.txt而非/vhosts/web1/a.txt.

wKioL1YE8DCBPKEMAACk0FUMo6A937.jpg

 

四、基于IP的访问控制的配置(以状态页面为例)

1.编辑配置文件,添加location /status {}段:

#vim /etc/nginx/nginx.conf
…..在上述定义server{}段中添加如下内容….
location /status {  #定义状态页的URL为/status
                stub_status on; #开启状态页
                allow 192.168.3.0/24; #允许192.168.3.0网段的主机访问
                deny all; #其他网段的主机禁止访问

       }

2.测试语法是否有误,然重新载入配置文件,最后执行访问测试即可

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

基于IP的控制就配置完成了,下面对其进行测试访问,在浏览器中输入:http://192.168.3.136:8080/status,观察访问结果!!wKiom1YE8ECyR-qdAAC8ZUldoHA997.jpg

 

五、基于用户的访问控制的配置

1.编辑配置文件/etc/nginx/nginx.conf

#vim /etc/nginx/nginx.conf
………在location{}段中,添加蓝色2行即可……
location /status {
               stub_status on;
               allow 192.168.3.0/24;
               deny all;
                auth_basic "Only for VIP";
                auth_basic_user_file/etc/nginx/users/.htpasswd;
        }

2./etc/nginx目录创建认证用户目录users,并用命令htpasswd为用户tom创建认证文件.htpasswd(最好用隐藏文件,如.htpasswd

# mkdir /etc/nginx/users
# yum install httpd –y
#htpasswd -c -m /etc/nginx/users/.htpasswd tom
….输入密码123即可

3.确保没有语法错误,并重新载入配置文件

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

 

到此我们基于用户的访问控制配置就完成了,下面对已经完成的配置进行访问测试,在浏览器中输入:http://192.168.3.136:8080/status,然后输入用户名tom和密码:123,认证通过即可访问nginx web服务器的状态页面了

wKiom1YE77_BLywgAAGS6SB76so625.jpg