Nginx

apache 到nginx的rewrite规则转换

apachenginx 的rewrite规则转换

重定向到主站点

在他们的共享主机生活中,曾经使用 Apache 的.htaccess文件配置所有内容的人通常会翻译以下规则:

RewriteCond  %{HTTP_HOST}  example.org
RewriteRule  (.*)          http://www.example.org$1

像这样:

server {
    listen       80;
    server_name  www.example.org  example.org;
    if ($http_host = example.org) {
        rewrite  (.*)  http://www.example.org$1;
    }
    ...
}

 

这是一种错误,繁琐且无效的方式。正确的方法是为 定义一个单独的服务器:…

    

HTTP2 下的 Transfer-Encoding: chunked

在 HTTP 中传输数据有一个 chunked 的方式, 又称“分块传输”。在响应报文里用头字段Transfer-Encoding: chunked 来表示。意思是报文里的 body 部分不是一次性发过来的,而是分成了许多的块(chunk)逐个发送。而 HTTP2.0 协议作为 HTTP协议的升级,自然是对chunked模式做支持?不然!

HTTP2 是没有 chunked 的!

分块传输也可以用于“流式数据”,例如由数据库动态生成的表单页面,这种情况下 body 数据的长度是未知的,无法在头字段“Content-Length”里给出确切的长度,所以也只能用 chunked 方式分块发送。

chunked 的编码规则

  • 每个分块包含两个部分,长度头和数据块;
  • 长度头是以 CRLF(回车换行,即rn)结尾的一行明文,用 16 进制数字表示长度;
  • 数据块紧跟在长度头后,最后也用 CRLF 结尾,但数据不包含 CRLF;
  • 最后用一个长度为 0 的块表示结束,即“0rnrn”

HTTP2 下的分块传输

先说结论,HTTP2 是不支持 

在 CentOS 7 上从源代码编译安装 Nginx

您可能需要比存储库中的版本更新的 Nginx 版本。截至今日(2019 年 4 月 30 日),最新版本为 1.16.0。Nginx 开发人员维护一个最新版本的 yum 存储库。我建议使用存储库,因为它更容易使 Nginx 保持最新。Nginx Linux 软件包页面解释了如何将其存储库添加到您的系统并从中安装 Nginx。如果您仍希望从源代码安装,请继续阅读。

    

Nginx修改默认Content-Type值,解决服务器文件没有扩展名时变为下载的问题

1、Nginx 安装之后 default_type的值默认配置为 application/octet-stream,而且目前已经配置很多域名,贸然的去修改这样的全局配置,可能应发不可用的问题

2、html结尾的文件,放到网站根目录下默认会被识别响应为 text/html.

3、但是今天反馈的文件是没有后缀的,所以默认就成了 application/octet-stream, 浏览器请求会直接进行下载,而不是展示文件内容

4、针对该文件进行单独的配置,如下

server {
    include local_ssl_port.conf;
    include ssl/ssl.conf;
    server_name    xxx.somedomain.com;
    root    /data/project/blog;
    include         expires.conf;

    location / {
        # 这里单独针对性的配置 default_type 为要求的格式
        default_type text/html;
    }
}

 

5、再次浏览器测试,展示为文件内容

    

nginx启用proxy cache 代理缓存

nginx启用proxy cache 代理缓存

nginx.conf中的
http {
下面加

proxy_cache_path /data/nginxcache levels=1:2 keys_zone=my_cache:500m max_size=10g inactive=30d use_temp_path=off;

某个站点的配置文件中增加以下配置:

location / {

proxy_cache my_cache;
proxy_cache_revalidate on;
#proxy_cache_valid 200 206 304 301 302 30d;
proxy_cache_valid any 30d;
proxy_ignore_headers "Set-Cookie";
proxy_ignore_headers "Expires";
#proxy_ignore_headers "Age";
proxy_cache_key …