微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Nginx配置伪静态

目录

一.简介

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; #图片服务器可以获取图片
	}

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐