openwrt nginx 配置PHP
<h2>简介:</h2><p>如果经常看我的文章,应该知道我这里的一个主路由是X86软路由。</p>
<p>配置还行:</p>
<p>Intel(R) Celeron(R) CPU 3215U @ 1.70GHz</p>
<p>1.80 GiB 24G+500G</p>
<p>只做路由器太浪费了,所以就有了一些跑在路由器上的东西。</p>
<p>只是docker和ipv6貌似不和,或者说我没配置好。有心情再搞它。</p>
<p>最大的作用其实就是WEB服务,nginx为主,基本上什么都行。</p>
<p>openwrt,关于nginx的说明。</p>
<p>https://openwrt.org/docs/guide-user/services/webserver/nginx</p>
<h2>一:PHP</h2>
<ul>
<li>PHP 是 "PHP Hypertext Preprocessor" 的首字母缩略词</li>
<li>PHP 是一种被广泛使用的开源脚本语言</li>
<li>PHP 脚本在服务器上执行</li>
<li>PHP 没有成本,可供免费下载和使用</li>
</ul>
<h2>二:安装</h2>
<p>opkg update && opkg install nginx-all-module luci-ssl-nginx php8 php8-cgi php8-fastcgi php8-fpm</p>
<h2>三:PHP配置</h2>
<p>增加php配置:/etc/nginx/conf.d/php.locations</p>
<div class="cnblogs_code">
<pre>location ~ [^/]\.php(/|<span style="color: rgba(0, 0, 0, 1)">$) {
fastcgi_split_path_info </span>^(.+?\.php)(/.*<span style="color: rgba(0, 0, 0, 1)">)$;
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (!-<span style="color: rgba(0, 0, 0, 1)">f $document_root$fastcgi_script_name) {
return </span><span style="color: rgba(128, 0, 128, 1)">404</span><span style="color: rgba(0, 0, 0, 1)">;
}
# Mitigate https:</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">httpoxy.org/ vulnerabilities</span>
fastcgi_param HTTP_PROXY <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">;
#error_log </span>/dev/<span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
fastcgi_connect_timeout 300s;
fastcgi_read_timeout 300s;
fastcgi_send_timeout 300s;
fastcgi_buffer_size 32k;
fastcgi_buffers </span><span style="color: rgba(128, 0, 128, 1)">4</span><span style="color: rgba(0, 0, 0, 1)"> 32k;
fastcgi_busy_buffers_size 32k;
fastcgi_temp_file_write_size 32k;
client_body_timeout 10s;
send_timeout 60s; # default, increase </span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> experiencing a lot of timeouts.
output_buffers </span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)"> 32k;
fastcgi_index index.php;
fastcgi_pass </span><span style="color: rgba(128, 0, 128, 1)">127.0</span>.<span style="color: rgba(128, 0, 128, 1)">0.1</span>:<span style="color: rgba(128, 0, 128, 1)">1026</span><span style="color: rgba(0, 0, 0, 1)">;
# include the fastcgi_param setting
include fastcgi_params;
# SCRIPT_FILENAME parameter is used </span><span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)"> PHP FPM determining
#the script name. If it is not set </span><span style="color: rgba(0, 0, 255, 1)">in</span> fastcgi_params <span style="color: rgba(0, 0, 255, 1)">file</span><span style="color: rgba(0, 0, 0, 1)">,
# i.e. </span>/etc/nginx/fastcgi_params or <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> the parent contexts,
# please comment off following line:
# fastcgi_paramSCRIPT_FILENAME $document_root$fastcgi_script_name;
}</span></pre>
</div>
<p>NGINX网站有一句If you’re using unix socket change <code class="docutils literal">fastcgi_pass</code> to:fastcgi_pass <span class="s">unix:/var/run/php-fpm.sock<span class="p">;</span></span></p>
<p><span class="s"><span class="p">根据我们的具体情况,可以改</span></span></p>
<pre><span>fastcgi_pass 127.0.0.1:1026<span>;为fastcgi_pass <span class="s">unix:/var/run/php8-fpm.sock<span class="p">;</span></span></span></span></pre>
<h2>四:FASTCGI配置</h2>
<p>/etc/nginx/fastcgi_params</p>
<p>默认配置似乎有问题,因为我看nginx关于fastcgi的配置和openwrt中fastcgi配置有不同</p>
<p>openwrt推荐的有,nginx推荐的没有:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">fastcgi_paramHTTPS $https if_not_empty;
fastcgi_paramREQUEST_SCHEME $scheme; </span></pre>
</div>
<p>nginx推荐的有,openwrt推荐的没有:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">fastcgi_paramSERVER_PROTOCOL $server_protocol;
fastcgi_paramHTTPS $https;
fastcgi_paramPATH_INFO $fastcgi_path_info;
fastcgi_paramPATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_paramSCRIPT_FILENAME $document_root$fastcgi_script_name;</span></pre>
</div>
<p>nginx有一句Please note if you’re using Ubuntu Precise (12.04), I change <code class="docutils literal"><span class="pre">SCRIPT_FILENAME</span></code> and add <code class="docutils literal"><span class="pre">PATH_INFO</span></code> params.</p>
<p>似乎是这个问题导致默认配置无法运行。</p>
<p> 我结合两个配置文件合并为:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">fastcgi_paramQUERY_STRING $query_string;
fastcgi_paramREQUEST_METHOD $request_method;
fastcgi_paramCONTENT_TYPE $content_type;
fastcgi_paramCONTENT_LENGTH $content_length;
fastcgi_paramSCRIPT_NAME $fastcgi_script_name;
fastcgi_paramREQUEST_URI $request_uri;
fastcgi_paramDOCUMENT_URI $document_uri;
fastcgi_paramDOCUMENT_ROOT $document_root;
fastcgi_paramSERVER_PROTOCOL $server_protocol;
fastcgi_paramHTTPS $https if_not_empty;
fastcgi_paramREQUEST_SCHEME $scheme;
fastcgi_paramPATH_INFO $fastcgi_path_info;
fastcgi_paramPATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_paramSCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_paramGATEWAY_INTERFACECGI</span>/<span style="color: rgba(128, 0, 128, 1)">1.1</span><span style="color: rgba(0, 0, 0, 1)">;
fastcgi_paramSERVER_SOFTWARE nginx</span>/<span style="color: rgba(0, 0, 0, 1)">$nginx_version;
fastcgi_paramREMOTE_ADDR $remote_addr;
fastcgi_paramREMOTE_PORT $remote_port;
fastcgi_paramSERVER_ADDR $server_addr;
fastcgi_paramSERVER_PORT $server_port;
fastcgi_paramSERVER_NAME $server_name;
# PHP only, required </span><span style="color: rgba(0, 0, 255, 1)">if</span> PHP was built with --enable-force-cgi-<span style="color: rgba(0, 0, 0, 1)">redirect
fastcgi_paramREDIRECT_STATUS </span><span style="color: rgba(128, 0, 128, 1)">200</span>;</pre>
</div>
<h2>五:测试</h2>
<p>在/www目录准备两个文件:</p>
<p>test.html</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_44898b01-73c4-43e0-8f02-b3a4697a9521" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_44898b01-73c4-43e0-8f02-b3a4697a9521" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_44898b01-73c4-43e0-8f02-b3a4697a9521" class="cnblogs_code_hide">
<pre><!DOCTYPE html>
<html>
<<span style="color: rgba(0, 0, 255, 1)">head</span>>
<meta charset=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">UTF-8</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<title>测试页</title>
</<span style="color: rgba(0, 0, 255, 1)">head</span>>
<body>
<span>HTML测试</span>
</body>
</html></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>test.php</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_1dcc120f-cc33-46c9-bd27-9d7e64ceadda" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_1dcc120f-cc33-46c9-bd27-9d7e64ceadda" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_1dcc120f-cc33-46c9-bd27-9d7e64ceadda" class="cnblogs_code_hide">
<pre><?<span style="color: rgba(0, 0, 0, 1)">php
phpinfo();
</span>?></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>此时访问http://openwrt的IP/test.html</p>
<p>此时访问http://openwrt的IP/test.php</p>
<p>均正常显示不报错即可</p>
<p> </p>
<p>六:注意事项</p>
<p>/etc/config/php8-fastcgi</p>
<p>配置了fastcgi的端口,openwrt的nginx,默认是1026</p>
<p>检查你的1026端口是否监听</p>
<p>netstat -antup | grep 1026</p>
<p><img src="https://img2022.cnblogs.com/blog/1241143/202205/1241143-20220517130022065-949012821.png" alt="" loading="lazy"></p>
<p> </p>
<p>如果没有,重启一下php8-fastcgi</p><br><br>
来源:https://www.cnblogs.com/jackadam/p/16271801.html
頁:
[1]