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下的页面