IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 配置Nginx+PHP,并解决Nginx不解析PHP的问题(由于HTTPS重定向) -> 正文阅读

[PHP知识库]配置Nginx+PHP,并解决Nginx不解析PHP的问题(由于HTTPS重定向)

引言

操作系统:Centos7
WEB服务器:Nginx
按照网上资料,安装了nginx,并配置成功,可以通过网址访问。
后期安装了PHP,以下均为配置时出现的问题和解决过程思路,记录在此。

1 问题一 nginx.conf中没有server段落

Nginx与PHP都安装好后,要配置Nginx解析PHP。
按照网上资料,要在nginx.conf中添加php解析信息。
打开nginx.conf,发现比网上资料说的要短的多,而且http段落里根本没有server段。
然后打开同目录下的nginx.conf.default,发现这里的内容比较全,本想把nginx.conf.default的有关内容拷贝到nginx.conf里,但想到之前网页已经正常运行,说明nginx.conf的server配置已经正确了,于是,仔细研究nginx.conf,发现在http段的最后,有一句

include /etc/nginx/conf.d/*.conf;

于是到/etc/nginx/conf.d目录,发现有个default.conf,打开看,发现server段在这个文件里。
原来Nginx为了使配置文件nginx.conf内容不至于太乱,允许把一些配置写在其他文件里,只要include一下这个文件就可了,这样,以后改动或添加server时,只改相应文件即可。

2 问题二 配置完server后,PHP不能解析

2.1 修改nginx.conf配置文件

打开/etc/nginx/conf.d/default.conf,找到端口为80的server段,原内容为:

server  {
	listen	80;
	server_name  www.somesomesome.com;
	...
}

于是在这个server段里添加以下内容

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

重启nginx

./nginx -s reload

写了一个以下内容的info.php文件,放网页根目录测试用

<?PHP phpinfo();?>

网页测试,发现PHP不解析,直接被下载下来了,失败。

2.2 查找问题

检查php-fpm是否运行,以及端口是否是9000

ps -ef | grep php
netstat -anp | grep 9000

已经运行,且端口是9000没错。
没办法,到处搜索资料,网上关于PHP不解析的文章很多,但大部分都是在纠结location那一节的写法,有些包含一些关于php的配置修改,各种方法依次测试,均无效,改的接近崩溃,计划要重装Nginx了。
在要放弃前,做最后一次尝试,测试看是不是加进conf的内容根本就没起作用。
尝试把这个server段里的root均指向一个不存在目录,也就是把网页文件位置指向改了。
再次测试,居然网页还是正常!
说明加进这个server段的location内容被nginx忽略了或根本就没被解释。

2.3 发现原因

再次打开研究default.conf,这个文件中写了两个server,第一个server是端口80,刚才一直在这个server内容里改来改去,后面其实还有第二个server,一直被无视。这次注意到第一个server里有一句话:

rewrite ^(.*)$ https://$host$1 permanent;

这是把http重定向到https了,看下一个server,果然端口是443。
至此,终于明白了,原来第一个80端口的server把所有请求转给443端口的server了。

2.4 问题解决

于是,把上面的location段落,移到下面这个443端口的server里,重启nginx。
再次测试phpinfo,问题解决。

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-03-31 23:44:14  更:2022-03-31 23:44:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 19:47:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码