晴明的博客园 GitHub      CodePen      CodeWars     

[web] nginx

start nginx

tasklist /fi "imagename eq nginx.exe"

If nginx does not start, look for the reason in the error log file logs\error.log.

nginx -s stop 	fast shutdown

nginx -s quit 	graceful shutdown

nginx -s reload 	changing configuration, starting new worker processes with a new configuration, graceful shutdown of old worker processes

nginx -s reopen 	re-opening log files

nginx -v

nginx -t     测试配置文件是否有错

main: nginx在运行时与具体业务功能(比如http服务或者email服务代理)无关的一些参数,比如工作进程数,运行的身份等。
http: 与提供http服务相关的一些配置参数。例如:是否使用keepalive啊,是否使用gzip进行压缩等。
server: http服务上支持若干虚拟主机。每个虚拟主机一个对应的server配置项,配置项里面包含该虚拟主机相关的配置。在提供mail服务的代理时,也可以建立若干server.每个server通过监听的地址来区分。
location: http服务中,某些特定的URL对应的一系列配置项。
mail: 实现email相关的SMTP/IMAP/POP3代理时,共享的一些配置项(因为可能实现多个代理,工作在多个监听地址上)。

在nginx中配置proxy_pass时,如果是按照^~匹配路径时,要注意proxy_pass后的url最后的/,当加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走。

proxy_cookie_domain xxx 把cookie的作用域替换成指定的域名。

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }

简单的cookie跨域反向代理

    server {
        listen       3000;
        location / {
            proxy_pass            http://xxx;
            proxy_cookie_domain   ooo localhost;
            proxy_cookie_path / /;
        }
    }

nginx正则表达式匹配

= 完全相等

~为区分大小写匹配

~*为不区分大小写匹配

!~和!~*分别为区分大小写不匹配及不区分大小写不匹配。

文件及目录匹配

-f和!-f用来判断是否存在文件

-d和!-d用来判断是否存在目录

-e和!-e用来判断是否存在文件或目录

-x和!-x用来判断文件是否可执行

eg:

if (-d $request_filename){ ... }

location ~* /.(gif|jpg|png|swf|flv)${...}

rewrite ^(.*)$ /nginx-ie/$1 break;

1.多目录转成参数
abc.domian.com/sort/2 => abc.domian.com/index.php?act=sort&name=abc&id=2

if ($host ~* (.*)/.domain/.com) { 

set $sub_name $1;    

rewrite ^/sort//(/d+)//?$ /index.php?act=sort&cid=$sub_name&id=$1 last; 

}

2.目录对换

/123456/xxxx -> /xxxx?id=123456

rewrite ^/(/d+)/(.+)/ /$2?id=$1 last;
posted @ 2016-08-17 14:40  晴明桑  阅读(151)  评论(0编辑  收藏  举报