渴望统一 發表於 2022-5-14 22:32:00

openwrt nginx 配置PHP

<h2>简介:</h2>
<p>如果经常看我的文章,应该知道我这里的一个主路由是X86软路由。</p>
<p>配置还行:</p>
<p>Intel(R) Celeron(R) CPU 3215U @ 1.70GHz</p>
<p>1.80 GiB&nbsp; 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 &amp;&amp; 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&nbsp;<code class="docutils literal">fastcgi_pass</code>&nbsp;to:fastcgi_pass&nbsp;<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&nbsp;<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&nbsp;<code class="docutils literal"><span class="pre">SCRIPT_FILENAME</span></code>&nbsp;and add&nbsp;<code class="docutils literal"><span class="pre">PATH_INFO</span></code>&nbsp;params.</p>
<p>似乎是这个问题导致默认配置无法运行。</p>
<p>&nbsp;我结合两个配置文件合并为:</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>&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;<span style="color: rgba(0, 0, 255, 1)">head</span>&gt;
    &lt;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>&gt;
    &lt;title&gt;测试页&lt;/title&gt;
&lt;/<span style="color: rgba(0, 0, 255, 1)">head</span>&gt;
&lt;body&gt;
    &lt;span&gt;HTML测试&lt;/span&gt;
&lt;/body&gt;
&lt;/html&gt;</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>&lt;?<span style="color: rgba(0, 0, 0, 1)">php
    phpinfo();
</span>?&gt;</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>&nbsp;</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>&nbsp;</p>
<p>如果没有,重启一下php8-fastcgi</p><br><br>
来源:https://www.cnblogs.com/jackadam/p/16271801.html
頁: [1]
查看完整版本: openwrt nginx 配置PHP