目錄
nginx中SSI问题的研究,nginxSSI问题研究
首頁 後端開發 php教程 nginx中SSI问题的研究,nginxSSI问题研究_PHP教程

nginx中SSI问题的研究,nginxSSI问题研究_PHP教程

Jul 13, 2016 am 09:57 AM
nginx

nginx中SSI问题的研究,nginxSSI问题研究

  最近感觉挺爽的,这个项目团队没有一个专门做PHP的,我是第一个进来做PHP(当然还有前端)的,哈哈,我会设计修改出适合我们业务的PHP框架,哈哈,感觉会学到很多东西的样子,前几天在组内20几个前辈面前讲php框架,以及跟大牛们探讨适合我们的php框架,感觉表达能力太差了,知道的东西表达不清楚,还要我的导师去帮我表达,这里感谢下我的导师于洪磊(简称磊哥),磊哥简直就是我的偶像,我没见过那么有深度的程序员,技术牛B这是肯定的了,对技术外的了解超出了我的想象,磊哥看的书很多,涉猎很广泛,尤其在历史和文学方面,聊起天来有理有条、幽默风趣、时不时的引用几句谁谁谁的文章,啊!真感觉不出来是一个技术大牛,更像是罗永浩那样的人,哈哈,在最近2年磊哥就是我的目标,多看书、多讲话,提高自己的表达能力,要不然自己知道的东西不能通过最直接的表达分享出去,这就很郁闷了。

  瞎扯了这么多,进入正题吧,今天要说的是一个关于SSI的问题,这里先介绍下SSI

  SSI是Server Side Inclde的缩写,就是服务端包含的意思,我今天要说的只是用到了nginx中SSI模块的include命令,这个命令会包含一个页面,然后在nginx服务器中展开。

  我遇到的是什么问题呢?现在有个富文本编辑编辑器,要求保存页面篇,输入一些html(包括SSI include命令),然后保存在数据库,保存之后还要求可以编辑,要求富文本编辑器中的内容就像这样内容就像下面这样:

<html>
<head>
</head>
<body>
	<!--#include virtual="/sinclude/test.shtml"-->
	<div>Hello World!!!</div>
</body>
</html>
登入後複製

  问题就处在了这里,这里面包含了ssi命令。

  这个如果直接访问的只显示Hello World!!!,我们对nginx做如下配置:

ssi on;
ssi_types text/html;
登入後複製

  这个时候如果有mime type为text/shtml类型的数据通过nginx的时候,nginx就回去解析这些命令,这导致了个问题,我在数据库中查出数据然后返回给客户端富文本编辑器就会出错,我的echo内容如下所示:

<!--# include virtual="/sinclude/test.shtml" -->
<!--# include virtual="/sinclude/test1.shtml" -->
<!--# include virtual="/sinclude/test2.shtml" -->
登入後複製

  页面会显示这种形式:

  这我就有点郁闷了,因为服务器上其他功能必须用到ssi,而我这里又不需要,这个该怎么办呢?

  这个时候我想到了ssi_types,这里面设置的是text/html,而常用的还有一种text/plain,这种类型的mime是什么呢,在浏览器中他会把所有的内容原封不动的显示出来,不去进行解析html、css。用了这种类型,nginx就不会进行展开了,试试在输出之前修改mime:

header('Content-type: text/plain');
登入後複製

  果然,在修改了mime之后,输出和数据库中的一致,原封不动:

  看样子问题解决了,但是没想到由于历史原因,后台的编辑框内内容和其他内容是一起返回的,这下囧了,如果设置为text/plain所有的内容都已文本形式显示在浏览器,问题等于还是没有解决~~

  这个时候想到nginx配置,由于需要nginx进行解析展开的文件一般为shtml、html等后缀,而查数据库一般为php所以我可以将ssi的所用于缩小为后缀名为shtml、html的文件,看看配置,这里我讲ssi配置信息移动到一个匹配中,再看看效果,

        location ~* \.(html|shtml|htm)$ {
            ssi on;
            ssi_types text/shtml;
            proxy_pass http://www.testssi.com;
        }
登入後複製

  新建html、php文件,内容类似,

<?php
echo '<!--# include virtual="/sinclude/test.shtml" -->';
echo '<!--# include virtual="/sinclude/test1.shtml" -->';
echo '<!--# include virtual="/sinclude/test2.shtml" -->';
echo 'TEst!!';
登入後複製

  html:

<!--# include virtual="/sinclude/test.shtml" -->
<!--# include virtual="/sinclude/test1.shtml" -->
<!--# include virtual="/sinclude/test2.shtml" -->
TEst!!
登入後複製

  会发现php访问只输出了Test!!,其他内容要查看源码才可以看见,html中则会进行解析,输出对应包含文件的内容或者没找到报错!!至此问题基本解决了,具体情况下周上班之后试下这个方法,应该没问题,测试的时候都是ok的。

 

  本文版权归作者iforever(luluyrt@163.com)所有,未经作者本人同意禁止任何形式的转载,转载文章之后必须在文章页面明显位置给出作者和原文连接。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/981699.htmlTechArticlenginx中SSI问题的研究,nginxSSI问题研究 最近感觉挺爽的,这个项目团队没有一个专门做PHP的,我是第一个进来做PHP(当然还有前端)的,哈...
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1325
25
PHP教程
1273
29
C# 教程
1252
24
nginx在windows中怎麼配置 nginx在windows中怎麼配置 Apr 14, 2025 pm 12:57 PM

如何在 Windows 中配置 Nginx?安裝 Nginx 並創建虛擬主機配置。修改主配置文件並包含虛擬主機配置。啟動或重新加載 Nginx。測試配置並查看網站。選擇性啟用 SSL 並配置 SSL 證書。選擇性設置防火牆允許 80 和 443 端口流量。

docker怎麼啟動容器 docker怎麼啟動容器 Apr 15, 2025 pm 12:27 PM

Docker 容器啟動步驟:拉取容器鏡像:運行 "docker pull [鏡像名稱]"。創建容器:使用 "docker create [選項] [鏡像名稱] [命令和參數]"。啟動容器:執行 "docker start [容器名稱或 ID]"。檢查容器狀態:通過 "docker ps" 驗證容器是否正在運行。

docker容器名稱怎麼查 docker容器名稱怎麼查 Apr 15, 2025 pm 12:21 PM

可以通過以下步驟查詢 Docker 容器名稱:列出所有容器(docker ps)。篩選容器列表(使用 grep 命令)。獲取容器名稱(位於 "NAMES" 列中)。

怎麼查看nginx是否啟動 怎麼查看nginx是否啟動 Apr 14, 2025 pm 01:03 PM

確認 Nginx 是否啟動的方法:1. 使用命令行:systemctl status nginx(Linux/Unix)、netstat -ano | findstr 80(Windows);2. 檢查端口 80 是否開放;3. 查看系統日誌中 Nginx 啟動消息;4. 使用第三方工具,如 Nagios、Zabbix、Icinga。

docker怎麼創建容器 docker怎麼創建容器 Apr 15, 2025 pm 12:18 PM

在 Docker 中創建容器: 1. 拉取鏡像: docker pull [鏡像名] 2. 創建容器: docker run [選項] [鏡像名] [命令] 3. 啟動容器: docker start [容器名]

nginx怎麼配置雲服務器域名 nginx怎麼配置雲服務器域名 Apr 14, 2025 pm 12:18 PM

在雲服務器上配置 Nginx 域名的方法:創建 A 記錄,指向雲服務器的公共 IP 地址。在 Nginx 配置文件中添加虛擬主機塊,指定偵聽端口、域名和網站根目錄。重啟 Nginx 以應用更改。訪問域名測試配置。其他注意事項:安裝 SSL 證書啟用 HTTPS、確保防火牆允許 80 端口流量、等待 DNS 解析生效。

nginx怎麼查版本 nginx怎麼查版本 Apr 14, 2025 am 11:57 AM

可以查詢 Nginx 版本的方法有:使用 nginx -v 命令;查看 nginx.conf 文件中的 version 指令;打開 Nginx 錯誤頁,查看頁面的標題。

nginx服務器掛了怎麼辦 nginx服務器掛了怎麼辦 Apr 14, 2025 am 11:42 AM

當 Nginx 服務器宕機時,可執行以下故障排除步驟:檢查 nginx 進程是否正在運行。查看錯誤日誌以獲取錯誤消息。檢查 nginx 配置語法正確性。確保 nginx 具有訪問文件所需的權限。檢查文件描述符打開限制。確認 nginx 正在偵聽正確的端口。添加防火牆規則以允許nginx流量。檢查反向代理設置,包括後端服務器可用性。如需進一步幫助,請聯繫技術支持。

See all articles