ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Nginx配置伪静态

2021-12-12 16:03:42  阅读:158  来源: 互联网

标签:index 静态 配置 uri try Nginx html location php


目录

一.简介

try_file用于伪静态。

正常的静态文件是一个xx.html文件,他是真实存在于服务器某个文件夹中的。动态网页是从数据库里查询,返回给浏览器的,实际上并没有这个文件,另外路径也很长。

伪静态优点:
缩短URL路径,更美观
URL路径短,容易被SEO收录,搜索排名靠前
隐藏了真实的访问路径,更安全

伪静态缺点:
与原生的url比较在性能上,不如原生的url,简单的说伪静态就是在服务器上又进行了一层url解析,消耗服务器资源。当然了这点消耗与优点相比,我们还是可以接受的。

下面是博客园中的一篇博客,地址是xx.html,让人看起来是一个html文件

这个是微信的一个文章的地址,后面的参数是文章在数据库中的位置,还有一些其它信息

二.配置

server {
    listen       80;
    server_name   xxx.baidu.com;
    index index.html  index.php;
    root   /data/html;

	location / {
            try_files $uri $uri/ /index.php?$query_string;
	}
	location ~ \.php$ {
            fastcgi_pass  127.0.0.1:9000;
            fastcgi_index index.php;
	}

}

try_files $uri $uri/ /index.php?$query_string

当访问http://www.baidu.com/3434.html 时,$uri就是3434.html,它会去本地的/data/html下面找3434.html。

如果没找到3434.html,就匹配$uri/,nginx会去/data/html找有没有这个目录。

如果还找不到就会匹配最后一个选项,/index.php?$query_string。发起一个内部 “子请求”,也就是相当于 nginx 发起一个 HTTP 请求http://www.baidu.com/3434.php 这个请求会被后面的location ~ .php$ 来匹配,当php程序解析完后,再返回给浏览器。

而具体的 URI 及参数是在 REQUEST_URI 中传递给 FastCGI 和 PHP 程序的,因此不受 URI 变化的影响。

三.整体流程

你在百度搜索一篇文章,右键复制链接地址,粘贴到笔记上,会发现链接非常的长。
https://www.baidu.com/link.php?wd=&eqid=e307e4f6000029fa000000035b864c15

当点击后,这篇文章所在的服务器,会try_files $uri $uri/ /index.php?$query_string;,首先匹配是否是xx.html,明显不是,但也不是文件夹,那就交给fastcgi,转而交给php-fpn去操作。

php看到里面写的是去数据库查询一个id号为e307e4f6000029fa000000035b864c15的文章,就将文章提取后发给浏览器,并取名叫3434.html,这个只是显示,并不存在。

四.更多

交给反向代理

如果后端不是php而是反向代理则:

    location / {
		#直接匹配最后面的,不去寻找了
        try_files /_not_exists_ @backend;
    }

	location @backend {
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host            $http_host;
        proxy_set_header   X-Forwarded-Proto $scheme;

        #后端程序地址
        proxy_pass http://127.0.0.1:8181;
    }

A机器没有的图片从B机器获得

server {

#访问图片文件,这里做解析
	location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
		root /img; #指定图片所在目录
        try_files $uri $uri/ @backend; #当图片不存在,会尝试交给@backend来获取图片
    }

	location @backend { #反向代理给图片服务器
		proxy_pass http://192.168.2.166; #图片服务器可以获取图片
	}

}

标签:index,静态,配置,uri,try,Nginx,html,location,php
来源: https://www.cnblogs.com/rxysg/p/15679536.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有