NGINX02 LNMP&地址重写

一、LNMP(Linux、Nginx、MySQL、PHP)

简介:

	静态网站 在不同环境下,浏览网站的内容不会发生变化
	动态网站 在不同环境下,浏览网站的内容有可能会发生变化,该种类网站显示内容效果更好,会让用户体验更好,更适合目前市场环境
	部署LNMP环境,有了该环境,nginx就可以很便利的支持动态网站,这也是主流的企业网站平台之一
		L:Linux操作系统
		N:Nginx网站服务软件(模块与配置)
		M:MySQL、MariaDB数据库
		P:网站开发语言

在这里插入图片描述
php-fpm服务:php-fpm 是fastCGI的进程管理器,配置文件/etc/php-fpm.d/www.conf
在这里插入图片描述
fastCGI 快速公共网关接口,可以用来关联网站服务与解释器

了解php相关配置文件,目前无需配置

					vim /etc/php-fpm.d/www.conf   //php有关的配置文件
					listen = 127.0.0.1:9000    //此处配置决定了php-fpm服务针对什么ip与什么端口
					pm.start_servers = 5    //一上来开启的进程数量,pstree可以查看php-fpm的进程数量,如果修改了需要重启php-fpm服务
					pm.max_children = 50   //开启的fastCGI进程最大数量
					fsatCGI每开一个解释器会消耗7-25M内存,所以fastCGI的数量不宜过大。

软件包:

	安装其他相关软件包
			yum -y install mariadb mariadb-server mariadb-devel  //安装数据库的客户端、服务端、依赖包
			yum -y install php   //安装php解释器程序
			yum -y install php-mysql  //安装php与数据关联的软件包
			yum -y install php-fpm   //安装让nginx具有动态网站解析能力的软件包
			systemctl  restart  mariadb   //开启数据库
			systemctl  restart  php-fpm	//开启php-fpm
			netstat -ntulp | grep :3306    //查看数据库端口
			netstat -ntulp | grep :9000		//查看php-fpm端口

实验一:使nginx可以解析php文件

		将php文件拷贝到nginx下的html下,启动nginx,利用浏览器访问192.168.2.5/test.php。结果自然是访问不了,他会显示一个下载的窗口。那如何读取到php文件呢?

		访问静态,动态页面对比:
				用户如果访问静态页面,nginx会直接将该页面传递给用户的主机,用户再使用浏览器解析该页面内容
				用户如果访问动态页面(如php语言编写的test.php页面),nginx要先将该页面扔给后台的php-fpm,该程序就会利用php解释器翻译php语言编写的网站页面,然后发给nginx程序,nginx再转发给用户,最终用户才能看到动态页面

			nginx实现动静分离
			为了让nginx支持动态网站的解析,要先修改配置文件,第65到71行去掉注释,69行不用去,才可以实现动态页面解析
					65        location ~ \.php$ {   //~是使用正则表达式,匹配以.php结尾
					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         }
		[root@proxy nginx]# sbin/nginx -s reload   //重新加载nginx配置文件,再使用火狐浏览器访问192.168.2.5/test.php可以看具体页面内容了

二、地址重写
可以实现在用户访问网站页面时推送其他页面的内容,或者跳转域名

地址重写测试1: 相同网站内的页面跳转,地址栏不变

			打开nginx主配置文件,在第42行添加   rewrite  ^/a.html$  /b.html;    
			当访问a页面时可以看到b页面的内容,此处的a.html匹配可以使用正则没有添加^和$之前,可以匹配/xyz/a.html 或 /a.htmlxyz添加了正则符号之后匹配的更精准,只针对/a.html进行重写。
			sbin/nginx -s reload   重加载配置文件
			使用火狐浏览器访问192.168.2.5/a.html  但看到了b.html的内容

地址重写测试2: 相同网站内的页面跳转,地址栏发生变化

			打开nginx主配置文件,在第42行添加
			rewrite  /a.html$  /b.html  redirect;   //添加了redirect(重定向)选项
			sbin/nginx -s reload   重加载配置文件
			使用火狐浏览器访问192.168.2.5/a.html,可以看到页面换成b.html的同时,浏览器地址栏也发生了变化

地址重写测试3:不同网站的地址跳转

			打开nginx主配置文件,在第42行添加
			rewrite  /  http://www.tmooc.cn;   访问老网站,跳转到新的
			sbin/nginx -s reload   重加载配置文件
			使用火狐浏览器访问192.168.2.5/a.html 会跳到tmooc.cn

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

			打开nginx主配置文件,在第42行添加
			rewrite  ^/(.*)$  http://www.tmooc.cn/$1;  访问老网站的某个页面时,跳转到新网站对应的相同页面。前面使用正则表达式匹配用户输入的任意页面,并保存起来(小括号在正则中的效果是保留,相当于保存复制),后面使用$1将之前保存的页面地址粘贴到新网站
			sbin/nginx -s reload   重加载配置文件
			使用火狐浏览器访问192.168.2.5/a.html

地址重写测试5:根据用户的情况决定跳转到什么样的页面

				cd  /usr/local/nginx/html
				mkdir  firefox   //创建火狐浏览器专属文件的目录
				echo "proxy_nginx_firefox~" > firefox/test.html  //准备火狐专用页面
				cd ..
				echo "proxy_nginx_other~"  > html/test.html  //准备普通浏览器使用的页面
				vim conf/nginx.conf  //删除原有地址重写的配置,然后在第46行添加
				if ($http_user_agent ~* firefox) {   //如果用户的浏览器使用了火狐,就执行下面的rewrite任务,~代表匹配正则,*是不区分大小写,$http_user_agent是nginx的内置变量,存储了用户的信息,比如用的什么浏览器
				rewrite ^/(.*)$  /firefox/$1;     //就跳转到火狐专用目录的页面
				}
				sbin/nginx -s reload   重加载配置文件
				分别使用火狐浏览器与其他浏览器访问192.168.2.5/test.html,可以得到两个不同页面内容则成功

地址重写相关选项:

					last 不再读同一个大括号中的其他rewrite
					break 不再读其他语句的rewrite,结束请求
					redirect 临时重定向,状态码302
					permanent 永久重定向  状态码301	

实验:测试地址重写相关选项

				修改配置:
						rewrite  /a.html  /b.html  redirect;
				然后开启或者重加载nginx服务
				curl 192.168.2.5/a.html		//此时看到的页面是b
				在日志文件中看到的状态码是302

						rewrite  /a.html  /b.html  permanent;
				sbin/nginx -s reload   //重加载nginx服务
				curl 192.168.2.5/a.html   //此时看到的页面也是b,说明redirect与permanent效果在客户机看来是一样的,但是状态码不一样,对于搜索引擎来说更关心301的

						rewrite /a.html /b.html;
				rewrite /b.html /c.html;
				sbin/nginx -s reload   //重加载nginx服务
				使用火狐访问192.168.2.5/a.html 看到的是c.页面

						rewrite /a.html /b.html last;   //然后再修改配置添加last可以实现不继续跳转
				sbin/nginx -s reload   //重加载nginx服务
				使用火狐访问192.168.2.5/a.html 看到的是b.html

在这里插入图片描述
开启或者重加载服务
使用火狐访问192.168.2.5/a.html 看到的是b.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值