2.Nginx的用户认证、虚拟主机、SSL虚拟主机

用户认证:
用户必须输入用户名和密码才能访问网页
    vim /usr/local/nginx/conf/nginx.conf
两行需要配置
        auth_basic "hello:";                                  //认证提示符""里面的内容自己写
        auth_basic_user_file "/usr/local/nginx/pass";         //认证密码文件,pass文件自己创建自己写

        server{
                listen       80;                                     //指定端口号,一定要以分号结尾
                server_name  localhost;                              
                auth_basic "Input Password:";                        //认证提示符,""里面的提示信息自己写,不能是中文
                auth_basic_user_file "/usr/local/nginx/pass";        //认证密码文件,pass文件需要用httpd-tools创建
                ssl_session_cache    shared:SSL:1m;                  
                ssl_session_timeout  5m;                             //超时时间限制
                location / {
                    root   html;                                     //网页根目录在哪
                    index  a.html;                                   //自己写一个
         }

这个pass文件要想生效,需要先去装httpd-tools
    htpasswd -c /user/local/nginx/pass  用户名        
            //用htpasswd -c命令去创建第一个用户,只有第一次创建登陆用户使用 -c,第二次再想追加用户 去掉 -c
            //密码自己敲,会自动变成密文存进这个文件,可以直接cat看效果
    要想建更多的用户:
        htpasswd /user/local/nginx/pass  用户名
            //追加创建用户不用-c
再/usr/local/nginx/sbin/nginx -s reload 重启

*****************************************************************************************************************

虚拟主机基于域名:
    客户端访问不同的域名看到不同的网页,但是多个网页都是一台nginx服务器提供的,这个功能在nginx叫虚拟主机
    可以在/usr/local/nginx/conf/nginx.conf中的anoter virtual host下面的那个server做另一个域名网站,去掉server里的注释改成
        server{
                listen       80;                //这里的端口也可以写80,同一个端口多个网页可以复用,也可以写别的端口                                    
                server_name  www.b.com;          //如果上面定义了非80端口,客户端访问www.b.com:端口号 的方式来访问该网页                           
                location / {
                    root   www;                //网站根目录在哪,www没有去/usr/local/nginx下去创建,html能作为网页根目录是同理的
                    index  index.html;         //index.html自己创建,名字无所谓多个网页如果在同一个目录下不重名即可
                    charset utf-8;             //让网页支持中文,否则网页里写中文就是乱码
                    }
         }
    以上都操作完了,重启nginx
    但是此时客户端没有域名解析,可以配置
    vim /etc/hosts        //本地域名解析文件 
        192.168.10.10 www.b.com www.a.com        //因为nginx的功能,当访问192.168.10.10这个ip时打开的是原始nginx网页,当访问www.b.com域名时打开的是b的网页

补充:
文字编码
ascII码: 可以将0 1 的组合替换成英文和符号。
国标2312:可以支持简体中文和基本的英文  0 1
BIG5:支持繁体  0 1 
苹果及许多大公司,联合推出了一个编码,叫万国编码 utf-8

虚拟主机基于ip:
创建基于ip的网站 
同一台服务器有多块网卡的话,可以用不同的ip,提供多个网站服务,之前的网页都是192.168.10.10提供的,可以变成192.168.10.11提供服务
server{
        listen   192.168.10.11:80;                                    //指定ip以及端口号,一定要以分号结尾,这里不指定ip时做的网页,服务器上如果两块卡的话它就都监听,也就是listen *:80
        server_name  localhost;                                      //指定域名
        location / {
            root    demon01;                                         //网页根目录在哪
            index   index.html;                                       //默认先打开demon1页面
 }
虚拟主机基于端口:
server{
        listen   192.168.10.11:8080;                                //指定ip以及端口号,一定要以分号结尾
        server_name  www.c.com;                                      //指定域名,可以不指定域名,也可以指定域名通过端口、ip、域名的各种组合呈现出多个网页
        location / {
            root    demon01;                                         //网页根目录在哪    
            index   index.html;                                       //默认先打开demon1页面
 }

****************************************************************************************************************

配置SSL虚拟主机
虚拟主机的加密网站,之前的实验叫用户认证,不存在公私钥解密的问题
TCP/IP协议 传输的时候都是明文传输
所以要利用http+SSL = https
加密算法:对称加密 非对称加密
对称加密:加密的时候是123  解密是123            工作机制导致网络加密不安全加密解密都是一把钥匙,只用在单机加密   
非对称加密:加密的时候是123 解密是as2d       加密和解密不是一把钥匙  私钥解密  公钥匙加密       
  王 --------------------------------------------------- taobao(公钥 私钥)  私钥只在taobao手里不在网上传输
用户密码                                  用户密码       
当王访问taobao就会下载公钥,而解密用的私钥在淘宝网自己手里,没有进行网络的传输 
                
信息摘要:信息完整性校验
MD5算法不安全 / sha256  虽然是加密算法,但是现在用来校验
可以利用命令直接做加密
md5sum anaconda-ks.cfg 给一个文件做MD5的加密算法   MD5算法跟文件名,时间,权限都无关,只跟文件内容有关,所以用来校验完整性,sha256与它功能一样
将这些生成的MD5码保存下来,和以后再做对比,就能很快发现,哪个文件被攻击了

ssl  前提先下载对应的http+SSL = https是模块功能之一 --with-http_ssl_module
生成私钥和证书(就是公钥)
1.密钥一定要放在Nginx软件配置文件的目录下
cd /usr/local/nginx/conf/   这是软件配置文件目录
openssl generation > cert.key                      生成私钥
openssl request -new -x509 -key cert.key > cert.pem           制作证书(公钥) 
                          (固定格式)  (用哪个私钥解密) 生成的就是公钥

回答的第一个问题是CN其他都无所谓
2.修改Nginx配置文件
HTTS server下面的sever{}去掉注释,并将域名改成一个虚拟主机名
server {
        listen       443 ssl;监听端口是443
        server_name            www.c.com;
        ssl_certificate      cert.pem;         #这里是证书文件
        ssl_certificate_key  cert.key;         #这里是私钥文件这俩文件以后可以去安全网站买,别忘了放指定位置
        ssl_session_cache    shared:SSL:1m;    #是缓存
        ssl_session_timeout  5m;               #加密超时时间是 5分钟
        ssl_ciphers  HIGH:!aNULL:!MD5;         #加密算法不能用哪种!MD5
        ssl_prefer_server_ciphers  on;         
        location / {                           #是指根网页目录
            root   html;
            index  index.html index.htm;
        }
    }      
                                                                                                     
然后重启Nginx
#请先确保nginx是启动状态,否则运行该命令会报错,报错信息如下:
#[error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)

然后客户端验证
前提是在/etc/hosts加解析   
客户端访问:https://www.c.com    要添加例外,客户端获取证书

这个公私钥是自己生成的,浏览器不信任,服务端可以找授权中心买公私钥 ssl证书,买回来之后可以调用买的这两个文件就行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值