目录

nginx简介

可以作为Web服务器的有:

 案例一:nginx安装与升级

 步骤一:平滑升级nginx服务器

案例二:nginx 服务器 用户认证(用户名密码)

案例三: nginx 虚拟主机(基于域名、基于IP、基于端口)

 案例四:HTTPS加密网站 (SSL虚机主机)


nginx简介

  • 是俄罗斯人编写的轻量级的HTTP服务器

  • 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器

    官方网站:nginx newsicon-default.png?t=M3C8http://nginx.org/

可以作为Web服务器的有:

    Unix和Linux平台下有:
       - Apache、Nginx、Tengine、 Lighttpd、  
       - Tomcat、 IBM WebSpgere、 Jboss  (这一排只能做java的网站)
     
    Windows平台下:
       - 微软公司的IIS(internet information server)

总结:在同样配置的情况下nginx的性能更高、消耗内存更低,并发量更高(并发量指:同时访问的数量)。现在新的项目中大多数是用的Nginx。

新浪、淘宝用的都是nginx,淘宝在nginx基础上做了Tengine 。

实验环境:

client 192.168.35.137 ens33
proxy 192.168.35.134 ens33
proxy 192.168.0.5 ens37

需要用的软件包:lnmp_soft.tar.gz

采用的方式是:scp lnmp_soft.tar.gz 192.168.35.134 /root/

 案例一:nginx安装与升级

采用 源码安装 的方式

源码装包的流程:手动装依赖包;手动创建用户;手动解包;手动指定用户和组;最后在编译。

1)、安装依赖包:
 [root@porxy ~]# yum  -y install  gcc pcre-devel openssl-devel  // gcc是c语言的解释器,pcre-devel是正则表达式,openssl-devel是用来加密和解密的。
  [root@porxy ~]# useradd -s /sbin/nologin nginx  //创建普通用户
  [root@porxy ~]# tar -xf nginx-1.20.1.tar.gz 
  这一步是root使用普通用户的功能起的服务,(即在执行这条命令时就变成了普通用户nginx敲的,为了保证数据的安全。)
  [root@porxy nginx-1.20.1]# ./configure \
> --user=nginx \       //指定用户
> --group=nginx \      //指定组
> --with-http_ssl_module \      //开启SSL加密功能
> --prefix=/usr/local/nginx       //指定安装路径
[root@porxy nginx-1.20.1]# make && make install  //编译(把英文转换成二进制的程序)
检查是否安装成功:
[root@porxy nginx]# ls  //查看nginx下有没有东西
conf  html  logs  sbin

2)、源码安装的包需要手动起服务:
[root@porxy ~]# /usr/local/nginx/sbin/nginx   //手动起服务只能启动一次,启动第二次会报错。
#第二次可使用重新加载配置方式。

 

nginx启动、暂停、加载命令:

[root@porxy ~]# /usr/local/nginx/sbin/nginx //启动服务

[root@porxy ~]# /usr/local/nginx/sbin/nginx -s stop //暂停服务

[root@porxy ~]# /usr/local/nginx/sbin/nginx -s reload //重新加载配置文件 [root@porxy ~]# /usr/local/nginx/sbin/nginx -V //查看软件信息

备注:Nginx没有重启命令,可以使用重新加载配置文件。

 3)、测试首页文件:

[root@porxy ~]# curl http://192.168.35.134
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
安装完毕!

 步骤一:平滑升级nginx服务器

升级版本不需要升级配置文件conf、升级网页html、日志文件logs。

只需要升级主程序sbin ,升级时可以跨版本升级,版本不易跨太大,否则会出现兼容的问题。

 新版本替换旧版本,替换时,把老的程序备份一下,以防后期新版本有问题再继续使用。

mv /usr/local/nginx/sbin/nginx  /usr/local/nginx/sbin/nginx.old

cp  /nginx-1.20.1/objs/nginx  /usr/local/sbin/nginx 
ls /usr/local/sbin/  //此时就会出现新的包 和备份的老的包
再nginx路径下 make upgrade //杀死老的进程,但一般这个命令会出现问题,可以执行 killall nginx   最后再重启服务 /usr/local/nginx/sbin/nginx

 

案例二:nginx 服务器 用户认证(用户名密码)

 需求:

在案例一的基础上。通过调整nginx服务端配置,实现以下目标:

1、访问web页面需要进行用户认证

2、用户名为:tom,密码为:123456

方案:

通过nginx实现web页面的认证,需要修改nginx的配置文件,在配置文件中添加auth语句实现用户认证,最后使用htpasswd命令创建用户及密码。

(案例一已经创建了网页,此时做用户认证,限制用户访问。)

1)修改nginx的配置文件:添加两行信息:认证提示符信息、认证的密码文件

vim /usr/local/nginx/conf/nginx.conf
    server {
        listen    80;
        server_name  localhost;
        
        auth_basic "input Password:";  #认证提示符信息
        auth_basic_user_file "/usr/local/nginx/pass"; #认证的
密码文件

        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            root   html;    #网站的根目录
            index  index.html index.htm;    #index  index.html是之默认首页,后面还有一个index.html是防止第一个网页找不到继续找第二个,如果第二个再找不到就会出现报错。(index 后面写谁,谁就是默认首页)
        }

2)生成密码文件。创建用户及密码

先安装依赖包:[root@porxy ~]# yum install -y http-tools
再使用htpasswd命令创建账户文件:
[root@porxy ~]# htpasswd -c /usr/local/nginx/pass tom   //添加用户tom,密码是123456
New password: 
Re-type new password: 
Adding password for user tom
[root@porxy ~]# cat /usr/local/nginx/pass
tom:$apr1$ETzsVba3$Rj7RiBAe2wJUMsZsncMc7.
如果还需要追加用户时,不使用参数-c选项
[root@porxy ~]# htpasswd /usr/local/nginx/pass jerry
New password: 
Re-type new password: 
Adding password for user jerry
[root@porxy ~]# cat /usr/local/nginx/pass
tom:$apr1$ETzsVba3$Rj7RiBAe2wJUMsZsncMc7.
jerry:$apr1$2v9zt153$ppz46v000kuAhjqCeRasQ0
3)重新加载配置:
[root@porxy ~]# /usr/local/nginx/sbin/nginx -s reload
4)客户端验证:
在浏览器出入IP地址,会出现需要输入用户名和密码,输入正确即可进入界面。

案例三: nginx 虚拟主机(基于域名、基于IP、基于端口)

 

需求:

沿用案例二,配置基于域名的虚拟主机,实现以下目标:

实现两个基于域名的虚拟主机,域名分别为www.a.comwww.b.com 对域名为www.a.com的站点进行用户认证,用户名称为tom,密码为123

方案:

修改nginx配置文件,添加server容器实现虚拟主机功能;对于需要进行用户认证的虚拟主机添加auth认证语句 虚拟主机一般可用分为:基于域名,基于ip和基于端口的虚拟主机

安装nginx后,会有默认的网页,但实际中一个不够用,需要添加多网页

1).修改Nginx服务配置,添加相关虚拟主机配置如下
[root@porxy ~]# vim /usr/local/nginx/conf/nginx.conf
 server {
        listen       80;
        server_name  www.a.com;

        auth_basic "input Password:";  #认证提示符信息
        auth_basic_user_file "/usr/local/nginx/pass"; #认证的
密码文件
        #charset koi8-r;
        location / {
            root   html;
            index  index.html index.htm;
        }


    server {
        listen       80;
        server_name  www.b.com;

        location / {
            root   www;
            index  index.html index.htm;
        }
    }
2)、创建网站根目录及对应的首页文件
[root@porxy ~]# mkdir /usr/local/nginx/www
[root@porxy ~]# echo "www"> /usr/local/nginx/www/index.html
3)、重新加载配置:
[root@porxy ~]# /usr/local/nginx/sbin/nginx  -s reload
4)、客户端测试:192.168.35.137   先添加域名解析
[root@client ~]# vim /etc/hosts  //本地域名解析文件,也称单机版解析文件

192.168.35.134  www.a.com  www.b.com
[root@client ~]# ping www.a.com
[root@client ~]# ping www.b.com

 案例四:HTTPS加密网站 (SSL虚机主机)

 问题:

沿用练习三、配置基于加密网站的虚拟主机,实现以下目标:

1、域名为www.c.com 2、该站点通过https访问 3、通过私钥、证书对该站点的所有数据进行加密 方案:

源码安装Nginx时,必须使用--with-http_ssl_module参数,启用加密模块,对于需要进行SSL加密处理的站点添加SSL相关指令(设置网站需要的私钥和证书)。

 

步骤一:配置SSL虚拟主机

 生成私钥和证书

 

[root@porxy ~]# cd /usr/local/nginx/conf
  [root@porxy conf]# openssl genrsa > cert.key  //生成私钥
Generating RSA private key, 2048 bit long modulus
..............................................................................................................................+++
........................+++
e is 65537 (0x10001)
  [root@porxy conf]# openssl req -new -x509 -key cert.key > cert.pem   //生成证书 
Country Name (2 letter code) [XX]:cn   //所在国家 
State or Province Name (full name) []:SHANXI   //所在省份
Locality Name (eg, city) [Default City]:xian  //所在城市
Organization Name (eg, company) [Default Company Ltd]:oupeng //所在机构
Organizational Unit Name (eg, section) []:it  //所在部门
Common Name (eg, your name or your server's hostname) []:porxy   // 服务器的名字
Email Address []:1232@163.com   //邮箱
  
2)修改Nginx配置文件,设置加密网站的虚拟主机 
 [root@porxy conf]#vim /nginx.conf   
    server {
         listen       443 ssl;
         server_name  www.c.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   html;    //打开的网页
             index  index.html index.htm;  
         }
   }

3)、 在客户端验证:192.168.35.137 先添加域名解析

[root@client ~]# vim /etc/hosts  //本地域名解析文件,也称单机版解析文件

192.168.35.134  www.a.com  www.b.com  www.c.com
[root@client ~]# ping www.c.com