Nginx学习

构建 Nginx WEB 服务器

Nginx WEB 入门简介

Nginx 主要用于反向代理。它由内核和模块组成,其中内核的设计非常微小和简洁,仅仅通过查找配置文件将客户端请求映射到一个 location block(location 是 Nginx 配置中的一个指令,用于 URL 匹配),而在这个 location 中所配置的每个指令将会启动不同的模块去完成相应的工作。

常用命令

检查nginx配置文件是否正确:/usr/local/nginx/sbin/nginx -t

启动nginx:/usr/local/nginx/sbin/nginx

附重启:/usr/local/nginx/sbin/nginx -s reload

查看进程:ps -ef |grep nginx

Nginx 虚拟主机配置

server {
    listen 80;
    server_name location                --可改成对应域名
    location / {                        --location block
        root html/dirName;              --发布路径
        index index.html index.htm;     --默认引导页
    }
}

Nginx 负载均衡配置*

#服务器的集群
upstream fzjh.com {     #服务器集群名字
    server  127.0.0.1:18081  weight=1;  #服务器配置   weight即权重
    server  127.0.0.1:18082  weight=2;
}
#当前的Nginx的配置
server {
    listen       80;            #监听端口
    server_name  localhost;     #当前服务的域名
    location / {
        proxy_pass http://fzjh.com;
        proxy_redirect default;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

附:ip_hashurl_hash

#ip_hash 通过客户端请求ip进行hash,再通过hash值选择后端server
upstream backend{
    ip_hash;
    server 192.168.128.1:8080;
    server 192.168.128.2:8080;
}
server {
    listen 8081;
    server_name test.csdn.net;
    root /home/system/test.csdn.net/test;
    location ^~ /Upload/upload {
        proxy_pass http://backend;
    }
}
#url_hash 通过请求url进行hash,再通过hash值选择后端server
upstream somestream {
    hash $request_uri;
    server 192.168.244.1:8080;
    server 192.168.244.2:8080;
}
server {
    listen 8081 default;
    server_name test.csdn.net;
    charset utf-8;
    location /get {
        proxy_pass http://somestream;
    }
}

Nginx 动静分离

location / {
    proxy_next_upstream http_502 http_504 error timeout invalid_header;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://tdt_wugk;
    expires 3d;
}
#动态页面交给 http://tdt_wugk,即之前定义的upstream tdt_wugk均衡
location ~ .*\.(php|jsp|cgi)?$
{
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://tdt_wugk;
}
#配置Nginx动静分离,定义的静态页面直接从Nginx发布目录读取
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
{
    root /data/www/wugk;
    expires 3d;                 #定义用户浏览器缓存的时间为3天
}

其他配置

worker_processes    1;          #工作进程的个数,一般与计算机的cpu核数一致  
events {  
    worker_connections  1024;   #单个进程最大连接数(最大连接数=连接数*进程数)
}
http {
    include         mime.types;     #文件扩展名与文件类型映射表
    default_type    application/octet-stream;   #默认文件类型
    sendfile        on;             #开启高效文件传输模式
    keepalive_timeout   65;         #长连接超时时间,单位是秒
    gzip            on;             #启用Gizp压缩
    server {
        ...
    }
}

Nginx Rewrite

Rewrite 规则的最后一项参数为 flag 标记,支持的 flag 标记主要有以下几种:

1) last:相当于 Apache 里德(L)标记,表示完成 rewrite

2) break:本条规则匹配完成后,终止匹配,不再匹配后面的规则

3) redirect:返回 302 临时重定向,浏览器地址会显示跳转后的 URL 地址

4) permanent:返回 301 永久重定向,浏览器地址栏会显示跳转后的 URL 地址

5) last 和 break 用来实现 URL 重写,浏览器地址栏 URL 地址不变

#在server中加入如下语句即可:
rewrite ^/(.*)$ http://www.xx.com/index.html redirect;
#常用于多个域名跳转到同一个域名,见下
server_name www.wugk.com wugk.com;
if ($host != ‘www.wugk.com’ ) {
    rewrite ^/(.*)$ http://www.wugk.com/$1 permanent;
}

Nginx location 规则匹配

  1. “= ”,字面精确匹配, 如果匹配,则跳出匹配过程(不再进行正则匹配)

  2. “^~ ”,最大前缀匹配,如果匹配,则跳出匹配过程(不再进行正则匹配)

  3. / 不带任何前缀:最大前缀匹配,eg. location / 在没有正则表达式匹配的情况下才匹配(优先级最低)

  4. “~ ”,大小写相关的正则匹配

  5. “~* ” , 大小写无关的正则匹配

  6. “@”, Named location 不是普通的 location 匹配,而是用于 location 内部重定向 的变量

优先级别: (location =) > (location 完整路径) > (location ^~ 路径) > (location ~* 正则) > (location 路径)

Nginx 日志分析

1) 分析截止目前为止访问量最高的 IP 排行

awk '{print $1}' /usr/local/nginx/logs/access.log|sort |uniq -c |sort -nr |head -20

2) 找到当前日志中 502 或者 404 错误的页面并统计

awk '{print $0}' /usr/local/nginx/logs/access.log|egrep "404|502"|awk '{print $1,$7,$9}'|more

Nginx 性能压测及评估

命令:./ab [options] [http://]hostname[:port]/path

-n 测试会话中所执行的请求个数,默认执行一个请求

-c 一次产生的请求个数,默认是一次一个

-t 测试所进行的最大秒数

-v 设置显示信息的详细程度

-V 显示版本号并退出。

./ab -c 1000 -n 1000 http://www.jfedu.net/index.php

Nginx集群

Nginx + Keepalived主从架构、双主架构

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值