nginx:俄罗斯人开发的一套轻量级的HTTP服务器,它是一个高性能的HTTP服务器、反向代理服务器同时也是IMAP/POP3/SMTP服务器。它是一套模块化软件,根据需求来安装相应的模块。


一  源码安装部署nginx

1、官网下载nginx源码包;http://nginx.org(官网)

2、创建用户(nginx为了安全需要指定用户安装,因为避免服务器被×××后拥有root权限)

useradd  -s  /sbin/nologin nginx

3、源码安装

    (1)、tar解包

    tar  xf  nginx-1.10.3.tar.gz

    (2)、./configure 配置

    cd  nginx-1.10.3

    ./configure  --prefix=/usr/local/nginx  --user=nginx  --group=nginx  --with-http_ssl_module

    (3)、编译

    make

    (4)、安装

    make install

备注: --preifx 指定目录,--user 指定用户, --group  指定组  --with-http_ssl_module  支持加密功能  ;具体要安装要安装那些模块需要根据后期要实现什么功能来定,因为模块安装的越多,空间资源占用大,漏洞也多,所以需要模块化安装。

常用命令:
/usr/local/nginx/sbin/nginx   #启动

/usr/local/nginx/sbin/nginx   -s  stop     #停止

/usr/local/nginx/sbin/nginx   -s  reload  #重新加载配置文件

/usr/local/nginx/sbin/nginx   -V   #查看nginx安装信息

为了后期方便使用需要给nginx做一个软连接,后期使用命令时就不需要打绝对路径,直接nginx。

ln -s /usr/local/nginx/sbin/nginx   /sbin

安装过程中如出现报错信息,根据报错信息来查看是否缺少依赖包。(gcc、pcre-devel、openssl-devel)


4、启动nginx访问测试

    nginx  #启动

    netstat  -nutlp  |  grep  80

    firefox  http://nginx服务器地址


netstat命令可以查看系统中启动的端口信息,该命令常用选项如下:

-a显示所有端口的信息

-n以数字格式显示端口号

-t显示TCP连接的端口

-u显示UDP连接的端口

-l显示服务正在监听的端口信息,如httpd启动后,会一直监听80端口

-p显示监听端口的服务名称是什么(也就是程序名称)


二  nginx升级

1、官网下载新版本的nginx

2、tar解包

    tar  xf  nginx-1.12.2.tar.gz

3、配置

    ./configure  --prefix=/usr/local/nginx  --user=nginx  --group=nginx  --with-http_ssl_module

4、编译

    make

5、备份旧版本nginx,拷贝新版本nginx,并把内存里正在运行的旧版升级

    mv  /usr/local/nginx/sbin/nginx  /usr/local/nginx/sbin/nginxold  

    cp  /nginx-1.12.2/objs/nginx   /usr/local/nginx/sbin/nginx

    make upgrade  (此命令包含两层意思:1杀死老版本的软件,2升级软件并启动)

6、检测

    nginx  -V

备注:在源码配置编译安装时,必须要在源码包目录里进行。


三  用户认证

客户端用户访问网页需要输入用户名密码才能访问网页。

配置文件解析

vim /usr/local/nginx/conf/nginx.conf

worker_processes  1;   #启动的进程数量

events {

    worker_connections  1024;   #1个进程允许1024个人访问

}

    http {

    server {          #在nginx主配置文件里面一个server代表一个网站;

    listen 80;        #监听80端口

    server_name localhost;    #网站域名

    root html;     #网站根目录

    }

    }

1、安装生成用户名密码文件的软件包httpd-tools

    yum -y install httpd-tools

    htpasswd  -c  /usr/local/nginx/pass tom   #生成叫tom的用户米和密码

    New password:        #输入密码

    Re-type new password:     #再次输入密码

    cat  /usr/local/nginx/pass   #查看用户名和密码文件

备注:如果要创建多个用户,此时需要去掉  -c  选项,因为-c为创建的意思,如果不去掉-c当前创建的用户会直接替换原来的用户名和密码

2、修改主配置文件

    在server_name 下面添加两行关键字

    auth_basic  "input youinfo";    #认证提示符

    auth_basic_user_file  "/usr/local/nginx/pass";   #认证密码文件

3、重新加在nginx

    nginx  -s reload

4、访问测试

    firefox  http://nginx服务器地址


三  虚拟主机

作用:一台服务器,一个nginx上面可以运行多个网站

三种类型:基于域名,基于端口,基于ip地址


基于域名的虚拟主机原理:

1、修改配置文件,一个server对应一个网站

vim /usr/local/nginx/conf/nginx.conf

http {

        server {

                    listen 80;    #监听80端口

                    server_name  www.a.com;  #定义域名

                         charset  utf-8;  #网站支持中文(utf-8) 万国编码

                         location  /  {

                                        root   html;   #指定网站根目录

                                        index  index.html index.htm; }

    }

        server {

                    listen 80;   #监听80端口

                    server_name  www.b.com;   #定义域名

                    location  /  { 

                                root   www;   #指定网站根目录

                                index  index.html index.htm; }

    }

}

备注:要实现基于ip或者端口时,直接在配置文件里面改相应的位置,例如,基于端口  修改listen 8000;   基于ip  修改  listen  192.168.1.2:80  。

另一个网站的页面文件需要在nginx安装目录下创建,要与html同级。

2、创建www文件夹

    mkdir  /usr/local/nginx/www

    在www文件里面,写b网站的页面内容

3、重新加载nginx服务

    nginx  -s  reload


客户端测试

1、编写本地域名解析文件

    vim  /etc/hosts

    ip地址       域名    域名

2、打开浏览器访问


四  SSL虚拟主机

通过私钥和证书对网站进行加密,使用https访问。

nginx要实现此功能需要安装 --with-http_ssl_module模块。

加密算法:

对称加密:AES、DES 主要应用于单机数据加密,加密和解密的密码一样。

非对称加密:RSA、DSA主要应用于网络数据加密,加密和解密密码不一样。

信息摘要:MD5、sha256,主要应用在数据完整性校验、数据秒传等。


1、生成私钥匙与证书,(私钥和证书必须放在conf文件下)

    openssl  genrsa  > cert.key   #生成私钥

    openssl  req  -new  -x509  -key cert.key  > cert.pem   #为cert.key生成证书

2、修改配置文件

vim /usr/local/nginx/conf/nginx.conf

server {

        listen       443 ssl;

        server_name  www.b.com;


        ssl_certificate      cert.pem;    #证书

        ssl_certificate_key  cert.key;   #私钥


        ssl_session_cache    shared:SSL:1m;

        ssl_session_timeout  5m;


        ssl_ciphers  HIGH:!aNULL:!MD5;

        ssl_prefer_server_ciphers  on;


        location / {

            root   www;

            index  index.html index.htm;

        }

    }

3、重新加载nginx

    nginx  -s  reload

客户端使用https访问,会发现地址栏里的域名旁有个×××的锁。证明已经完成。