目次
nginx中SSI问题的研究,nginxSSI问题研究
ホームページ php教程 php手册 nginx中SSI问题的研究,nginxSSI问题研究

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

Jun 13, 2016 am 09:07 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)所有,未经作者本人同意禁止任何形式的转载,转载文章之后必须在文章页面明显位置给出作者和原文连接。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Tomcat サーバーへの外部ネットワーク アクセスを許可する方法 Tomcat サーバーへの外部ネットワーク アクセスを許可する方法 Apr 21, 2024 am 07:22 AM

Tomcat サーバーが外部ネットワークにアクセスできるようにするには、以下を行う必要があります。 外部接続を許可するように Tomcat 構成ファイルを変更します。 Tomcat サーバー ポートへのアクセスを許可するファイアウォール ルールを追加します。 Tomcat サーバーのパブリック IP を指すドメイン名を指す DNS レコードを作成します。オプション: リバース プロキシを使用して、セキュリティとパフォーマンスを向上させます。オプション: セキュリティを強化するために HTTPS を設定します。

thinkphpの実行方法 thinkphpの実行方法 Apr 09, 2024 pm 05:39 PM

ThinkPHP フレームワークをローカルで実行する手順: ThinkPHP フレームワークをローカル ディレクトリにダウンロードして解凍します。 ThinkPHP ルート ディレクトリを指す仮想ホスト (オプション) を作成します。データベース接続パラメータを構成します。 Webサーバーを起動します。 ThinkPHP アプリケーションを初期化します。 ThinkPHP アプリケーションの URL にアクセスして実行します。

nginx へようこそ!それを解決するにはどうすればよいですか? nginx へようこそ!それを解決するにはどうすればよいですか? Apr 17, 2024 am 05:12 AM

「nginx へようこそ!」エラーを解決するには、仮想ホスト構成を確認し、仮想ホストを有効にし、Nginx をリロードする必要があります。仮想ホスト構成ファイルが見つからない場合は、デフォルト ページを作成して Nginx をリロードすると、エラー メッセージが表示されます。が消え、ウェブサイトは通常のショーになります。

Dockerコンテナ間で通信する方法 Dockerコンテナ間で通信する方法 Apr 07, 2024 pm 06:24 PM

Docker 環境でのコンテナ通信には、共有ネットワーク、Docker Compose、ネットワーク プロキシ、共有ボリューム、メッセージ キューの 5 つの方法があります。分離とセキュリティのニーズに応じて、Docker Compose を利用して接続を簡素化するか、ネットワーク プロキシを使用して分離を強化するなど、最も適切な通信方法を選択します。

phpmyadminの登録方法 phpmyadminの登録方法 Apr 07, 2024 pm 02:45 PM

phpMyAdmin に登録するには、まず MySQL ユーザーを作成して権限を付与し、次に phpMyAdmin をダウンロード、インストール、構成し、最後に phpMyAdmin にログインしてデータベースを管理する必要があります。

Nodejsプロジェクトをサーバーにデプロイする方法 Nodejsプロジェクトをサーバーにデプロイする方法 Apr 21, 2024 am 04:40 AM

Node.js プロジェクトのサーバー デプロイメント手順: デプロイメント環境を準備します。サーバー アクセスの取得、Node.js のインストール、Git リポジトリのセットアップ。アプリケーションをビルドする: npm run build を使用して、デプロイ可能なコードと依存関係を生成します。コードをサーバーにアップロードします: Git またはファイル転送プロトコル経由。依存関係をインストールする: サーバーに SSH で接続し、npm install を使用してアプリケーションの依存関係をインストールします。アプリケーションを開始します。node Index.js などのコマンドを使用してアプリケーションを開始するか、pm2 などのプロセス マネージャーを使用します。リバース プロキシの構成 (オプション): Nginx や Apache などのリバース プロキシを使用して、トラフィックをアプリケーションにルーティングします。

HTMLファイルからURLを生成する方法 HTMLファイルからURLを生成する方法 Apr 21, 2024 pm 12:57 PM

HTML ファイルを URL に変換するには Web サーバーが必要です。これには次の手順が含まれます。 Web サーバーを取得します。 Webサーバーをセットアップします。 HTMLファイルをアップロードします。ドメイン名を作成します。リクエストをルーティングします。

phpmyadmin のインストールが失敗した場合の対処方法 phpmyadmin のインストールが失敗した場合の対処方法 Apr 07, 2024 pm 03:15 PM

失敗した phpMyAdmin インストールのトラブルシューティング手順: システム要件を確認する (PHP バージョン、MySQL バージョン、Web サーバー)、PHP 拡張機能を有効にする (mysqli、pdo_mysql、mbstring、token_get_all)、構成ファイル設定を確認する (ホスト、ポート、ユーザー名、パスワード)、ファイルを確認するアクセス許可 (ディレクトリの所有権、ファイルのアクセス許可)、ファイアウォール設定の確認 (Web サーバー ポートのホワイトリスト)、エラー ログの表示 (/var/log/apache2/error.log または /var/log/nginx/error.log)、テクニカル サポートの問い合わせ ( phpMyAdmin

See all articles