2021-05-13

本文详细介绍了如何配置LNMP环境,包括关闭与重新安装Nginx,创建SSL证书,实现HTTPS安全加密网站。此外,还涉及动态网站的部署,如修改Nginx配置以支持PHP,通过FastCGI处理动态请求。同时,文章讲解了Nginx的地址重写功能,展示了多种重写场景,如域名跳转、页面内容跳转等,以及针对不同浏览器设置专属页面的方法。
摘要由CSDN通过智能技术生成

5.13-----------------------------------------------------------------------
    环境准备,如果nginx异常,需要按照以下方式重新创建
     /usr/local/nginx/sbin/nginx -s stop     #首先关闭nginx
    cd ~/lnmp_soft/nginx-1.17.6/     #重新到nginx目录
     rm -rf /usr/local/nginx/    #删除现有nginx
     make install    #重新安装nginx
    cd /usr/local/nginx/     #回到nginx目录
    sbin/nginx   -V    #查询可以看到下列信息中有" --with-http_ssl_module "模块即可
    configure arguments: --prefix=/usr/local/nginx --user=nginx --with-http_ssl_module  
   #查询内容
  ------------------------------------------------- 
  恢复nginx为默认状态
   [root@proxy ~]# cd /usr/local/nginx/  #回到nginx目录
   [root@proxy nginx]# cp conf/nginx.conf.default   conf/nginx.conf   #恢复nginx配置   文件   为默认状态
   cp:是否覆盖"conf/nginx.conf"? y

  2.修改配置,实现安全加密网站
   443---https 安全加密网站         80---https 非安全加密网站
  [root@proxy nginx]# vim conf/nginx.conf        #修改98~115行
  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;
        }
    }
  3.创建私钥与证书(包含公钥)
  [root@proxy nginx]# openssl genrsa > conf/cert.key  #创建私钥(钥匙)
  [root@proxy nginx]# openssl req -x509 -key conf/cert.key > conf/cert.pem  #创建证书,    证书中包含公钥,生成过程会询问诸如你在哪个国家之类的问题,可以随意回答,但要走完全过程,  创建公钥(锁)
   -----
  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          电子邮件
4.创建页面并测试
  [root@proxy nginx]# ls conf/
     cert.key                cert.pem        #看里面是否有这两个文件       
  [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    #如果用真机的火狐浏览器测试需要关闭防火墙
--------------------------------------------------------------------------------
    静态网站 :在不同的环境下  访问的网站内容不会改变
    动态网站 :在不同的环境下  访问的网站内容有可能会改变

【●】部署LNMP
 一、LNMP基础知识
  1.什么是LNMP
   ●主流的企业网站平台之一,有了LNMP环境,nginx就可以很便利的支持动态网站,这也是主流的企   业网站平台之一
   —  L:linux操作系统
   —  N:Nginx网站服务软件
   —  M:MySQL、MariaDB数据库
   —  P:网站开发语言(PHP、Perl、Python)
  2.环境准备 ,准备nginx以及相关软件包
  [root@proxy ~]# cd  /root/lnmp_soft/nginx-1.17.6
  [root@proxy nginx-1.17.6]# killall nginx                      #杀掉nginx相关程序
  [root@proxy nginx-1.17.6]# rm -rf /usr/local/nginx/  #删除nginx原有目录
  [root@proxy nginx-1.17.6]# make install  #安装
  [root@proxy nginx-1.17.6]# ls /usr/local/nginx/  #查看目录下是否有这四个文件
  conf  html  logs  sbin
  [root@proxy nginx-1.17.6]# cd /usr/local/nginx/
 二、LNMP安装
   1.安装Nginx
   2.安装MariaDB数据库
   [root@proxy nginx]# yum -y install mariadb-server  #安装数据库服务端
   [root@proxy nginx]# yum -y install mariadb       #安装数据库客户端
   [root@proxy nginx]# yum -y install mariadb-devel   #安装数据库依赖包
   3.安装PHP
   [root@proxy nginx]# yum -y install php  # 安装php环境(相当于解释器)
   4.安装PHP扩展
   [root@proxy nginx]# yum -y install php-mysql  #安装php与数据库关联的软件包
   [root@proxy nginx]# yum -y install php-fpm    #安装可以让nginx具备动态网站解析能力的软   件包(服务)
   5.启动服务
  [root@proxy nginx]# systemctl start mariadb  #开启数据库
  [root@proxy nginx]# systemctl start php-fpm  #检测php-fpm服务
  [root@proxy nginx]# netstat -ntulp | grep  :3306   #检测数据库服务
   tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      8767/mysqld
  [root@proxy nginx]# netstat -ntulp | grep  :9000    #检测php-fpm服务
  tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      8807/php-fpm: maste

6.修改nginx配置
   打开nginx配置文件,第65到71行去掉注释,69行不用去
   [root@proxy nginx]#vim   conf/nginx.conf
   location ~ \.php$ {         #~是使用正则表达式,匹配以.php结尾
                root           html;      #网站页面位置,不用改,保持默认
               fastcgi_pass   127.0.0.1:9000;  #一旦用户访问了.php结尾的文件,就让nginx找后台的php-fpm(端口号9000)
                fastcgi_index  index.php;           #动态网站的默认页面,无需修改
            #   fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_n    ame;    #/无用
行,保持注释状态
               include        fastcgi.conf;   #这里需要修改名称
            }
  [root@proxy nginx]# sbin/nginx
  [root@proxy nginx]# sbin/nginx -s reload
-------------------------------------------------------
  [root@proxy nginx]# cd /root/lnmp_soft/php_scripts/
  [root@proxy php_scripts]# cp test.php  /usr/local/nginx/html  #拷贝动态网站测试页面到nginx中
  [root@proxy php_scripts]# cat test.php
  [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</body>
---------------------------------------------------------
7.测试有数据库的动态网站
  [root@proxy nginx]#cd /root/lnmp_soft/php_scripts/  #到php目录
  [root@proxy php_scripts]# cp mysql.php /usr/local/nginx/html/  #拷贝另外一个测试页面到  nginx
  浏览器打开http://192.168.2.5/mysql.php   可以看到网站显示了数据的账户信息
  [root@proxy php_scripts]# cd /usr/local/nginx     #

  mysql  
  [root@proxy nginx]# mysql  # 进入数据库
  MariaDB [(none)]> create user dc@localhost identified by '123';    #创建测试账户
  MariaDB [(none)]>quit       #退出
  刷新http://192.168.2.5/mysql.php  可以看到新创建的用户 
-------------------------------------------------------------------------------

【●】Nginx+FastCGI
   一、FastCGI
  1.FastCGI工作原理
   —1.  Web Server 启动时载入FastCGI进程管理器
   —2.FastCGI进程管理器初始化,启动多个解释器
   —3.当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个解释器
   —4.FastCGI子进程完成处理后返回结果,将标准结果输出和错误信息从同一个链接返回Web Server
  2.FastCGI缺点
  ●内存消耗大  PHP-CGI解释器每进程消耗7至25兆内存
  ●Nginx+PHP (FastCGI)     10个Nginx进程消耗150M内存   64个php-cgi进程消耗1280M内存
---------------------------------------------------------------------------------------
【●】Nginx高级技术
  一、地址重写(地址重写,可以精简访问路径,也可以隐藏服务器真实文件路径)
  1.基础知识
   ●什么是地址重写
  —获得一个来访的URL 请求,然后改写成服务器可以处理的另一个URL的过程
   ●地址重写的好处
  —缩短URL,隐藏实际路径提高安全性
  —易于用户记忆和键入
  —易于被搜索引擎收录
  2.rewrite  语法
   格式:rewrite     旧    新    选项


3.应用案例(域名跳转)
   [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
    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
rewrite ^/a.html$ /b.html;                                 #在42行添加
        location / {
            root   html;
            index  index.html index.htm;
        }
  [root@proxy nginx]# sbin/nginx -s reload
  [root@proxy nginx]# systemctl stop firewalld
   然后打开火狐使用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:
    [root@proxy nginx]# vim conf/nginx.conf
     server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
rewrite ^/a.html$ /b.html  redirect;                                 #在42行刚刚配置中添加redirect
        location / {
            root   html;
            index  index.html index.htm;
        }
  [root@proxy nginx]# sbin/nginx -s reload
  使用浏览器访问http://192.168.2.5/a.html 路径访问网站

 ●地址重写测试3:
 www.abcd6789.com   ---->旧网站跳转到新网站---->              www.abc.com
    [root@proxy nginx]# vim conf/nginx.conf
     server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
rewrite /  http://www.tmooc.cn;                                 #访问192.168.2.5就跳到tmooc
        location / {
            root   html;
            index  index.html index.htm;
        }
  [root@proxy nginx]# sbin/nginx -s reload
使用火狐浏览器访问192.168.2.5 会跳到tmooc.cn

●地址重写测试4:
    [root@proxy nginx]# vim conf/nginx.conf
     server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;访问192.168.2.5就跳到tmooc
rewrite  /(.*)  http://www.tmooc.cn/$1;                                 #访问老网站的某个页面时,跳转到
  新网站对应的相同页面。前面使用正则表达式匹配用户输入的任意页面,并保存起来(小括号在正则  中的效果是保留,相当于复制),后面使用$1将之前保存的页面地址粘贴到新网站
        location / {
            root   html;
            index  index.html index.htm;
        } 
  [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、付费专栏及课程。

余额充值