安全网站与地址重写

本文档详细介绍了如何搭建基于SSL技术的安全网站,包括nginx的依赖包配置、加密算法理解、环境异常处理等步骤。接着,展示了部署LNMP环境以支持动态网站的全过程,包括安装nginx、mariadb、php及其相关软件包。最后,通过地址重写技术,实现了路径精简和隐藏服务器真实路径的功能,提供了多个地址重写测试案例。
摘要由CSDN通过智能技术生成

一、搭建基于ssl技术的安全网站

nginx的依赖包

  1. gcc make  
  2. pcre-devel  
  3. openssl-devel
  • conf(主配置文件)
  • html(网页文件)    
  • sbin(开服务)    
  • logs(日志)

sbin/nginx   -s  reload    (重新读取配置文件)
sbin/nginx   -V             模块

 

了解加密算法

  1. 对称算法      AES   DES        单机数据加密  一个密码可以加密,同时也可以解密
  2. 非对称算法  RSA   DSA        网络数据加密  私钥 解密(钥匙)      公钥 加密(锁)
  3. 信息摘要      md5   sha256   数据校验

 

环境准备,如果nginx异常,需要按照以下方式重新创建

        [root@proxy ~]#  /usr/local/nginx/sbin/nginx -s stop     #首先关闭nginx

        [root@proxy ~]# cd ~/lnmp_soft/nginx-1.17.6/     #重新到nginx目录

        [root@proxy ~]# rm -rf /usr/local/nginx/    #删除现有nginx

        [root@proxy ~]# make install     #重新安装nginx

        [root@proxy ~]# cd /usr/local/nginx/     #回到nginx目录

        [root@proxy ~]# sbin/nginx   -V    #查询可以看到下列信息中有" --with-http_ssl_module "模块即可

                            configure arguments: --prefix=/usr/local/nginx --user=nginx --with-http_ssl_module

 

 

修改配置,实现安全加密网站

加密网站的端口:443  非加密的网站:80

[root@proxy ~]# cd /usr/local/nginx/

[root@proxy nginx]# vim conf/nginx.conf     #修改98~115行

将98到115行的#替换为空
            :98,115s/#//

    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_c;     #这里修改页面存储目录

            index  index.html index.htm;

        }

    }

 

创建私钥与证书

[root@proxy ~]# cd /usr/local/nginx/

[root@proxy nginx]# openssl genrsa > conf/cert.key   #创建私钥,创建在主配置文件目录下

[root@proxy nginx]# openssl req -x509 -key conf/cert.key > conf/cert.pem   #创建证书,生成过程会有问题,使用-x509格式   根据私钥创建公钥   重定向   创建在主配置文件目录下

             Country Name (2 letter code) [XX]:dc    #国家名

             State or Province Name (full name) []:dc    #省份

             Locality Name (eg, city) [Default City]:dc     #城市

             Organization Name (eg, company) [Default Company Ltd]:dc    #公司

             Organizational Unit Name (eg, section) []:dc    #部门

             Common Name (eg, your name or your server's hostname) []:dc    #服务器名称

             Email Address []:dc@dc.com     #电子邮件

 

创建页面并测试

[root@proxy ~]# cd /usr/local/nginx/

[root@proxy nginx]# mkdir html_c    #创建安全网站的目录

[root@proxy nginx]# echo "nginx-C~~~~"  > html_c/index.html     #创建安全网站的页面

[root@proxy nginx]# sbin/nginx      #开服务

[root@proxy nginx]# sbin/nginx -s reload    #重加载配置

[root@proxy nginx]# curl  -k  https://www.c.com     #检验,-k是忽略风险

                nginx-C ~~~~      #看到这个内容就说明实验成功

[root@proxy nginx]# systemctl stop firewalld    #如果用真机的火狐浏览器测试需要关闭防火墙,然后输入https://www.c.com 火狐浏览器测试仅限于真机是windows,

 

 

二、部署LNMP 环境,实现动态网站解析

 

静态网站    在不同环境下 访问网站内容不会变化

动态网站    在不同环境下 访问网站内容有可能变化

 

有了LNMP环境,nginx就可以很便利的支持动态网站,这也是主流的企业网站平台之一

 

LNMP环境

  1. L  linux  #系统
  2. N  nginx     #网络服务
  3. M  mariadb (mysql)   #数据库
  4. P   php    #开发语言

 

准备nginx以及相关软件包

[root@proxy ~]# cd  ~/lnmp_soft/nginx-1.17.6/

                          killall nginx          #关掉nginx相关程序

                          rm -rf /usr/local/nginx/    #删除nginx原有目录

                          ./configure  --with-http_ssl_module   #配置

                           make           #编译

                           make install   #安装

安装mariadb

yum -y install mariadb-server   #安装数据库服务端

yum -y install mariadb          #安装数据库客户端

yum -y install mariadb-devel    #安装数据库依赖包

yum -y install php                  #安装php环境(相当于解释器)

yum -y install php-mysql       #安装php与数据库关联的软件包

yum -y install php-fpm        #安装可以让nginx具备动态网站解析能力的软件包(服务)

systemctl start mariadb         #开启数据库

systemctl start php-fpm         #开启php-fpm

netstat  -ntulp  | grep  :3306   #检测数据库服务

netstat  -ntulp  | grep  :9000   #检测php-fpm服务

 

修改nginx配置(打开动态网站的服务)

打开nginx配置文件,第65到71行去掉注释,69行不用去

[root@proxy nginx]# vim conf/nginx.conf
      65         location ~ \.php$ {     #~是使用正则表达式,匹配以.php结尾当用户访问动态网站时交给后台php(67行)
      66             root           html;     #网站页面位置,不用改,保持默认
      67             fastcgi_pass   127.0.0.1:9000;    #一旦用户访问了.php结尾的文件,就让nginx找后台的php-fpm(端口号9000)
      68             fastcgi_index  index.php;      #动态网站的默认页面,无需修改
      69      #     fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
      70             include        fastcgi.conf;         #这里需要修改名称
      71         }  

 

测试效果

                      cd ~/lnmp_soft/php_scripts/   

[root@proxy php_scripts]# cp test.php /usr/local/nginx/html/     #拷贝动态网站测试页面到nginx中

[root@proxy php_scripts]# systemctl stop firewalld                #关闭防火墙

[root@proxy php_scripts]# /usr/local/nginx/sbin/nginx              #开启nginx,如果已经开启就使用 /usr/local/nginx/sbin/nginx -s reload 如果均不能正常开启,就用killall nginx然后重新试

                                                                                                         然后使用浏览器访问192.168.2.5/test.php 可以看到以下内容说明nginx成功支持动态网站。

                  This is HTML message

                   c is bigger

 

测试有数据库的动态网站

cd  ~/lnmp_soft/php_scripts/    #到php目录

cp  mysql.php  /usr/local/nginx/html/   #拷贝另外一个测试页面到nginx

                                                           #浏览器打开http://192.168.2.5/mysql.php   可以看到网站显示了数据的账户信息

 

mysql   #进入数据库

create user dc@localhost identified by '123';   #创建测试账户

quit         #退出(q)

                                                 #刷新http://192.168.2.5/mysql.php  可以看到新创建的用户

fastCGI

 

 

三、地址重写,可以精简访问路径,也可以隐藏服务器真实文件路径

格式:rewrite   旧(支持正则)   新    选项

[root@proxy nginx]# echo 'AAA~~~~~'  >html/a.html

[root@proxy nginx]# echo 'BBB~~~~~'  >html/b.html

[root@proxy nginx]# cat html/a.html

                         AAA~~~~~

[root@proxy nginx]# cat html/b.html

                          BBB~~~~~

 

地址重写测试1

[root@proxy nginx]# vim conf/nginx.conf
          42   rewrite /a.html /b.html;        #地址跳转,输入192.168.2.5/a.html  会看到/b.html
[root@proxy nginx]# vim conf/nginx.conf
                 rewrite ^/a.html$ /b.html redirect;

然后打开火狐使用http://192.168.2.5/a.html路径访问网站可以看到b页面

                      如果访问http://192.168.2.5/a.htmldc 或者http://192.168.2.5/dc/a.html

可能造成误跳转,所以在rewrite 后匹配旧路径时要增加^ 和$

 

地址重写测试2

    42   rewrite ^/a.html$ /b.html redirect;   #在刚刚的配置中添加redirect

[root@proxy nginx]# sbin/nginx -s reload

使用http://192.168.2.5/a.html路径访问网站

 

地址重写测试3:从旧网站跳到新网站

   42   rewrite / http://www.tmooc.cn;   #访问192.168.2.5就跳到tmooc

[root@proxy nginx]# sbin/nginx -s reload  

使用火狐浏览器访问192.168.2.5 会跳到tmooc.cn

 

地址重写测试4: 不同网站的相同页面的跳转

      42  rewrite /(.*) http://www.tmooc.cn/$1;    #访问老网站的某个页面时,跳转到

         新网站对应的相同页面。前面使用正则表达式匹配用户输入的任意页面,并保存

         起来(小括号在正则中的效果是保留,相当于复制),后面使用$1将之前保存的页面地址粘贴到新网站

[root@proxy nginx]# sbin/nginx -s reload   #重加载配置文件

使用火狐浏览器访问192.168.2.5/a.html可以转到www.tmooc.cn/a.html (由于该网

站没有a.html页面,会出现404报错属于正常)

 

 

地址重写测试5:为火狐浏览器用户设置专属页面

火狐浏览器    192.168.2.5/abc.html   火狐专属页面  html/firefox/abc.html

非火狐浏览器  192.168.2.5/abc.html   普通页面      html/abc.html

 

修改配置文件,删除原有地址重写,在第47行添加

[root@proxy nginx]# vim conf/nginx.conf

   if ($http_user_agent ~* firefox){   #如果用户使用了火狐浏览器

                              rewrite /(.*) /firefox/$1;  #就进行地址重写操作,让用户看到火狐专属页面

                                                                   #$http_user_agent是nginx的内置变量,存储了用户的信息,比如用的什么浏览器~匹配正则  *忽略大小写

 

[root@proxy nginx]# mkdir html/firefox   #创建火狐页面专属目录

[root@proxy nginx]# echo "firefox~~~" > html/firefox/abc.html   #创建火狐专属页面

[root@proxy nginx]# echo "others~~~~" > html/abc.html    #创建普通页面

[root@proxy nginx]# sbin/nginx -s reload   

关闭防火墙,然后使用火狐浏览器查看192.168.2.5/abc.html可以看到之前html/firefox目录下的页面,非火狐浏览器看到的是html下的页面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值