Table of Contents
Research on SSI issues in nginx, research on nginxSSI issues
Home Backend Development PHP Tutorial Research on SSI issues in nginx, Research on nginxSSI issues_PHP tutorial

Research on SSI issues in nginx, Research on nginxSSI issues_PHP tutorial

Jul 13, 2016 am 09:57 AM
nginx

Research on SSI issues in nginx, research on nginxSSI issues

I feel quite happy recently. No one in this project team specializes in PHP. I am the first one to come in to do PHP ( Of course there is the front end), haha, I will design and modify a PHP framework that suits our business, haha, I feel like I will learn a lot. A few days ago, I talked about the PHP framework in front of more than 20 seniors in the group, and talked with the big guys We are discussing the PHP framework that is suitable for us. I feel that my ability to express myself is too poor. I cannot express clearly what I know. I still need my mentor to help me express it. I would like to thank my mentor Yu Honglei (Brother Lei for short) and Brother Lei. He is simply my idol. I have never seen such a profound programmer. This is for sure that he is a good technician. His understanding of technology is beyond my imagination. Brother Lei has read a lot of books and has a wide range of interests, especially in In terms of history and literature, the chat is organized and humorous, and I quote a few words from someone's article from time to time, ah! I really don’t feel that he is a technical master, more like a person like Luo Yonghao, haha. In the past two years, Brother Lei has been my goal. Read more books, speak more, and improve my ability to express myself. Otherwise, what I know cannot be Sharing it through the most direct expression is very depressing.

After so much nonsense, let’s get to the point. Today I’m going to talk about a question about SSI. Let’s first introduce SSI

SSI is the abbreviation of Server Side Include, which means server side inclusion. What I am going to talk about today is just using the include command of the SSI module in nginx. This command will include a page and then expand it in the nginx server.

What problem am I encountering? Now there is a rich text editor that requires you to save the page, enter some HTML (including the SSI include command), and then save it in the database. After saving, it also requires that it can be edited. The content in the rich text editor is required to be like this. As follows:

<html>
<head>
</head>
<body>
	<!--#include virtual="/sinclude/test.shtml"-->
	<div>Hello World!!!</div>
</body>
</html>
Copy after login

The problem lies here, which contains the ssi command.

If accessed directly, only Hello World will be displayed! ! ! , we configure nginx as follows:

ssi on;
ssi_types text/html;
Copy after login

At this time, if there is data with mime type text/shtml passing through nginx, nginx will go back to parse these commands, which causes a problem. I find the data in the database and return it to the client rich text editor. An error will occur. My echo content is as follows:

<!--# include virtual="/sinclude/test.shtml" -->
<!--# include virtual="/sinclude/test1.shtml" -->
<!--# include virtual="/sinclude/test2.shtml" -->
Copy after login

The page will display this form:

This makes me a little depressed, because other functions on the server must use SSI, but I don’t need it here. What should I do?

At this time, I thought of ssi_types. The setting here is text/html, and there is also a commonly used text/plain. What is this type of mime? In the browser, it will leave all the content intact. It is displayed dynamically without parsing html and css. If this type is used, nginx will not expand. Try modifying the mime before outputting:

header('Content-type: text/plain');
Copy after login

Sure enough, after modifying the mime, the output is consistent with the one in the database and remains unchanged:

It seems that the problem has been solved, but I didn’t expect that due to historical reasons, the content in the background edit box is returned together with other content. This is embarrassing. If it is set to text/plain, all the content will be displayed in text form. Browser, the problem is still not solved~~

At this time, I think of the nginx configuration. Since the files that need to be parsed and expanded by nginx generally have suffixes such as shtml and html, and the query database is usually php, I can reduce the use of ssi to files with suffixes of shtml and html. Take a look at the configuration, here I will move the ssi configuration information into a match, and then look at the effect,

        location ~* \.(html|shtml|htm)$ {
            ssi on;
            ssi_types text/shtml;
            proxy_pass http://www.testssi.com;
        }
Copy after login

Create new html and php files with similar content,

<?php
echo '<!--# include virtual="/sinclude/test.shtml" -->';
echo '<!--# include virtual="/sinclude/test1.shtml" -->';
echo '<!--# include virtual="/sinclude/test2.shtml" -->';
echo 'TEst!!';
Copy after login

HTML:

<!--# include virtual="/sinclude/test.shtml" -->
<!--# include virtual="/sinclude/test1.shtml" -->
<!--# include virtual="/sinclude/test2.shtml" -->
TEst!!
Copy after login

You will find that the php access only outputs Test!!, and other content can only be seen by viewing the source code. In html, it will be parsed, and the content corresponding to the included file will be output or an error will be reported if it is not found! ! At this point the problem has basically been solved. If you try this method after work next week, it should be fine. It was ok during the test.

The copyright of this article belongs to the author iforever (luluyrt@163.com). Any form of reprinting is prohibited without the consent of the author. After reprinting the article, the author and the original text link must be given in an obvious position on the article page.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/981699.htmlTechArticleResearch on SSI issues in nginx. Research on nginxSSI issues has been quite exciting recently. None of this project team specializes in PHP Yes, I was the first one to come in and do PHP (and front-end of course), ha...
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to configure cloud server domain name in nginx How to configure cloud server domain name in nginx Apr 14, 2025 pm 12:18 PM

How to configure an Nginx domain name on a cloud server: Create an A record pointing to the public IP address of the cloud server. Add virtual host blocks in the Nginx configuration file, specifying the listening port, domain name, and website root directory. Restart Nginx to apply the changes. Access the domain name test configuration. Other notes: Install the SSL certificate to enable HTTPS, ensure that the firewall allows port 80 traffic, and wait for DNS resolution to take effect.

How to check nginx version How to check nginx version Apr 14, 2025 am 11:57 AM

The methods that can query the Nginx version are: use the nginx -v command; view the version directive in the nginx.conf file; open the Nginx error page and view the page title.

How to start nginx server How to start nginx server Apr 14, 2025 pm 12:27 PM

Starting an Nginx server requires different steps according to different operating systems: Linux/Unix system: Install the Nginx package (for example, using apt-get or yum). Use systemctl to start an Nginx service (for example, sudo systemctl start nginx). Windows system: Download and install Windows binary files. Start Nginx using the nginx.exe executable (for example, nginx.exe -c conf\nginx.conf). No matter which operating system you use, you can access the server IP

How to check the name of the docker container How to check the name of the docker container Apr 15, 2025 pm 12:21 PM

You can query the Docker container name by following the steps: List all containers (docker ps). Filter the container list (using the grep command). Gets the container name (located in the "NAMES" column).

How to check whether nginx is started How to check whether nginx is started Apr 14, 2025 pm 01:03 PM

How to confirm whether Nginx is started: 1. Use the command line: systemctl status nginx (Linux/Unix), netstat -ano | findstr 80 (Windows); 2. Check whether port 80 is open; 3. Check the Nginx startup message in the system log; 4. Use third-party tools, such as Nagios, Zabbix, and Icinga.

How to run nginx apache How to run nginx apache Apr 14, 2025 pm 12:33 PM

To get Nginx to run Apache, you need to: 1. Install Nginx and Apache; 2. Configure the Nginx agent; 3. Start Nginx and Apache; 4. Test the configuration to ensure that you can see Apache content after accessing the domain name. In addition, you need to pay attention to other matters such as port number matching, virtual host configuration, and SSL/TLS settings.

How to create a mirror in docker How to create a mirror in docker Apr 15, 2025 am 11:27 AM

Steps to create a Docker image: Write a Dockerfile that contains the build instructions. Build the image in the terminal, using the docker build command. Tag the image and assign names and tags using the docker tag command.

How to start containers by docker How to start containers by docker Apr 15, 2025 pm 12:27 PM

Docker container startup steps: Pull the container image: Run "docker pull [mirror name]". Create a container: Use "docker create [options] [mirror name] [commands and parameters]". Start the container: Execute "docker start [Container name or ID]". Check container status: Verify that the container is running with "docker ps".

See all articles