nginx安装:
我按照上面步骤安装的.然后练习下nginx的日常操作,先熟悉下面几个命令
/usr/local/webserver/nginx/sbin/nginx -t # 修改conf后验证 /usr/local/webserver/nginx/sbin/nginx -s reload # 重新载入配置文件 /usr/local/webserver/nginx/sbin/nginx -s reopen # 重启 Nginx
/usr/local/webserver/nginx/sbin/nginx -s stop # 停止 Nginx
sudo nginx -c /usr/local/etc/nginx/nginx.conf # 停止后的启动
ps -ef |grep nginx
netstat -anp |grep 3306 error_log 级别分为 debug, info, notice, warn, error, crit 默认为crit, 该级别在日志名后边定义格式如下: 1.设置并返回参数 location / { default_type text/html;
set $a "hello";
set $b "world"; return 200 "$a$b"; }2.获取参数并处理
获取请求的word参数
location /test {
default_type text/html; set $suff "s"; set $word "$arg_word"; return 200 "单词$word 的复数是$word$suff"; }3.花括号的使用
location /test1 {
default_type text/html; set $word "$arg_word"; return 200 "test1单词$word 的复数是${word}s"; }4.http下的geo模块
可根据请求的url中name参数的IP匹配返回值
geo $arg_name $a {
default “我是geo默认值”; 127.0.0.1 “我是张三”; 192.168.1.1 “我是李四”; }location / {
default_type text/html; return 200 $a; }5.内置动态变量
目前在nginx的http模块中有六种内置动态变量,分别是“http_”、“sent_http_”、“upstream_http_”、“upstream_cookie”、“cookie_”,“arg_”
以“http_”开头的动态内置变量可以表示http请求过程中的任意请求头,使用的过程中不区分大小写,并且请求头中如果有“-”字符需要用“_”字符替代。
location /gethead {
default_type text/html; return 200 "User-Agent:$http_user_agent"; }6.根据请求头中值判断转发
upstream oldserver {
server www.baidu.com; } upstream newserver { server www.qq.com; }
location /livenet {
set $vc "$http_vc"; if ( $vc ~* "(200)") { proxy_pass http://oldserver; } if ( $vc ~* "(300)") { proxy_pass http://newserver; }
location /livenet/ { include /etc/nginx/proxy.conf; proxy_set_header Cookie $http_cookie; #根据请求头跳转 set $vc "$http_vc"; if ( $vc ~* "(220)") { proxy_pass http://new; }
#根据url请求地址跳转
if ($request_uri ~* "getinfo"){ proxy_pass http://new; } proxy_pass http://tomcat; }
//匹配到xxl后将会在root访问目录后追加xxl
location ^~ /xxl{
root /usr/share/nginx/html/XXL; index index.html index.htm; } }
2.rewrite 使用
server {
listen 80;
server_name abc.com;
rewrite ^/(.*) http://www.abc.com/$1 permanent;
}
https://www.jb51.net/article/82168.htm
https://www.cnblogs.com/czlun/articles/7010604.html
其它:
-
nginx中使用“$”或“${}”符号来表示一个变量
-
nginx中的变量支持变量插入,比如“I am a $uri”
-
可以表示变量的有效字符只有四种:“a-z”、“A-Z”、“0-9”、“_”
-
nginx中变量可分为内置变量(比如$uri)和自定义变量(比如用set定义的变量)
-
nginx 中所有的变量都是全局可见的,但它又不是全局变量
-
nginx中有六种动态内置变量,分别是“http_”、“sent_http_”、“upstream_http_”、“upstream_cookie”、“cookie_”,“arg_”。(在nginx的1.13.2版本中又多一个“$sent_trailer_”)
-
nginx中几乎所有的内置变量都是不可变的,除了“args”和“$limt_rate”
-
nginx中所有的变量都会关联一个get_handler()方法,不可缓存的变量每次获取值时都会调用这个方法,可缓存的变量只会调用一次
-
nginx中的变量在各个请求之前是相互隔离的(主子请求除外)
-
变量在主子请求之间是共享的,但最终值是否相同则取决于该变量是否可缓存
-
nginx中的变量值都是字符型的(除了“${binary_remote_addr}”变量)
7.启用GZIP
gzip on;
gzip_min_length 1k; gzip_buffers 4 16k; #gzip_http_version 1.1; gzip_comp_level 6; gzip_types text/plain application/javascript text/javascript image/jpeg image/gif image/png text/css application/xml; gzip_vary on;
注意:application/javascript ,去年x-