Nginx服务器的安装与一些基本配置总结

2019-10-17 19:56:50于海丽

配置一个blockips.conf,然后在nginx.conf中include

e.g

location {
  allow 127.0.0.1; #允许本地ip 注意顺序,allow要放在前面
  deny all; #禁止其他ip
}

Rewrite模块
作用:执行URL重定向,允许你去掉带有恶意的URL,包含多个参数(修改)

利用正则的匹配,分组和引用,达到目的

break/return/set等

if (-f $uri) {
  break
}
if ($uri ~ ^/admin/){
  return 403;
}
if ($uri ~ ^/search/(.*)$) {
  set $query $1;
  rewrite ^ /search.php?q=$query?;
}

例子

A:http://website.com/search/some-search-keywords
B:http://website.com/search.php?q=some-search-keywords
rewrite ^/search/(.*)$ /search.php?q=$1?;

A:http://website.com/user/31/James
B:http://website.com/user.php?id=31&name=James
rewrite ^/user/([0-9]+)/(.+)$ /user.php?id=$1&name=$2?;

A:http://website.com/index.php/param1/param2/param3
B:http://website.com/index.php/?p1=param1&p2=param2&p3=param3
rewrite ^/index.php/(.*)/(.*)/(.*)$ /index.php?p1=$1&p2=$2&p3=$3?;

rewrite语法

rewrite A B option;

options:
        last :表示完成rewrite
        break:本规则匹配完成后,终止匹配,不再匹配后面的规则
        redirect:返回302临时重定向,地址栏会显示跳转后的地址
        permanent:返回301永久重定向,地址栏会显示跳转后的地址
Proxy模块
默认模块,允许你讲客户端的HTTP请求转到后端服务器

location / {
  proxy_pass_header Server; #该指令强制一些被忽略的头传递到客户端
  proxy_redirect off; #允许改写出现在HTTP头却被后端服务器触发重定向的URL,对相应本身不做任何处理
  proxy_set_header Host $http_host; #允许你重新定义代理header值再转到后端服务器.目标服务器可以看到客户端的原始主机名
  proxy_set_header X-Real-IP $remote_addr; #目标服务器可以看到客户端的真实ip,而不是转发服务器的ip
  proxy_set_header X-Scheme $scheme;
  proxy_pass http://localhost:8080;
}

upstream模块

upstream up_name {
  server 192.168.0.1:9000 weight=5; #权重
  server 192.168.0.2:9000 weight=5 max_fails=5 fail_timeout=60s; #在60s内,其错误通信超过5次,认为该服务失效
  server 192.168.0.3:9000 down; #服务标记为离线,不再使用
  server 192.168.0.4:9000 backup; #备份服务器,其他全部宕机了才启用
}

其他
配置静态化目录
 

  location /static/
  {
    root /var/www/app/;
    autoindex off;
  }

负载均衡

http {
  include mime.types;
  default_type application/octet-stream;

  keepalive_timeout 120;

  tcp_nodelay on;

  upstream up_localhost {
    server 127.0.0.1:8000 weight=5;
    server 127.0.0.1:8001 weight=10;
  }

  server {
    listen 80;

    server_name localhost;

    location /{
      proxy_pass http://up_localhost;
      proxy_set_header Host $host;
      proxy_set_header X-Real_IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
  }

}