nginx常用语句

  • 格式:nginx -s reload
  • 帮助:-? -h
  • 使用指定的配置文件:-c
  • 指定配置指令:-g
  • 指定运行目录:-p
  • 发送信号:-s
    • 立刻停止服务:stop
    • 优雅的停止服务:quit
    • 重载配置文件:reload
    • 重新开始记录日志文件:reopen
  • 测试配置文件是否有语法错误:-t -T
  • 打印nginx的版本信息、编译信息等:-v -V

windows系统下:在cmd界面 打开:start nginx 关闭:nginx -s stop

openresty

使用lua脚本文件

location / {
    default_type text/html;
    content_by_lua_file C:/Users/Desktop/openresty-1.15.8.3-win64/conf/luaTest/a.lua;	
}

HTTP请求处理流程

openresty版

nginx版

HTTP反向代理流程

全局变量

全局变量名 功能
$host 请求信息中的 Host,如果请求中没有 Host 行,则等于设置的服务器名,不包含端口
$request_method 客户端请求类型,如 GETPOST
$args 请求中的参数
$arg_PARAMETER GET 请求中变量名 PARAMETER 参数的值,例如:$http_user_agent(Uaer-Agent 值), $http_referer...
$content_length 请求头中的 Content-length 字段
$http_user_agent 客户端agent信息
$http_cookie 客户端cookie信息
$remote_addr 客户端的IP地址
$remote_port 客户端的端口
$http_user_agent 客户端agent信息
$server_protocol 请求使用的协议,如 HTTP/1.0HTTP/1.1
$server_addr 服务器地址
$server_name 服务器名称
$server_port 服务器的端口号
$scheme HTTP 方法(如http,https)

location配置标记匹配

=  :URI必须完全匹配
~  :大小写敏感匹配
~* :大小写不敏感匹配
^~ :前缀匹配,匹配URI的前半部分即可

静态服务

server {
  listen       80;
  server_name  static.sherlocked93.club;
  charset utf-8;    # 防止中文文件名乱码

  location /download {
    alias	          /usr/share/nginx/html/static;  # 静态资源目录
    
    autoindex               on;    # 开启静态资源列目录
    autoindex_exact_size    off;   # on(默认)显示文件的确切大小,单位是byte;off显示文件大概大小,单位KB、MB、GB
    autoindex_localtime     off;   # off(默认)时显示的文件时间为GMT时间;on显示的文件时间为服务器时间
  }
}

nginx解决跨域问题

方式一

在前端服务地址为 fe.sherlocked93.club 的页面请求 be.sherlocked93.club 的后端服务导致的跨域,可以这样配置:

server {
	listen 9001;
	server_name fe.sherlocked93.club;  
	
	location / {    
  	proxy_pass be.sherlocked93.club;  
  }
}

这样就将对前一个域名 fe.sherlocked93.club 的请求全都代理到了 be.sherlocked93.club,前端的请求都被我们用服务器代理到了后端地址下,绕过了跨域。

方式二

添加表头


server {
  listen       80;
  server_name  be.sherlocked93.club;

  add_header 'Access-Control-Allow-Origin' '*';
  add_header 'Access-Control-Allow-Credentials' 'true';
	  
  location / {
    root  /usr/share/nginx/html/be;
    index index.html;
  }
}

图片防盗链

server {
  listen       80;
  server_name  *.sherlocked93.club;
  
  # 图片防盗链
  location ~* \.(gif|jpg|jpeg|png|bmp|swf)$ {
    valid_referers none blocked 192.168.0.2;  # 只允许本机 IP 外链引用
    if ($invalid_referer){
      return 403;
    }
  }
}

请求过滤

# 非指定请求全返回 403
if ( $request_method !~ ^(GET|POST|HEAD)$ ) {
  return 403;
}

location / {
  # IP访问限制(只允许IP是 192.168.0.2 机器访问)
  allow 192.168.0.2;
  deny all;
  
  root   html;
  index  index.html index.htm;
}

添加新模块

1.下载模块

git clone https://github.com/agentzh/echo-nginx-module

2.放入指定位置

mv echo-nginx-module-master /usr/local/src/nginx-1.8.1/echo-nginx-module

3.查看已编译参数

/usr/local/nginx/sbin/nginx -V   结果为:
--user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6

4.重新编译

./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --add-module=/usr/local/src/nginx-1.8.1/echo-nginx-module --with-ipv6 
make

PS: 这里只需要make,一定不要执行make install,不然会覆盖

5.备份原文件

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

6.替换nginx二进制文件

cp /usr/local/src/nginx-1.8.1/objs/nginx /usr/local/nginx/sbin/nginx

7.检查以及平滑启动nginx

ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx(做软链,添加到环境变量)
nginx -t (检测配置文件)
nginx -s reload (平滑重启)

posted on 2020-01-10 00:05  MrSmartLin  阅读(654)  评论(0编辑  收藏  举报

导航