Nginx常见应用场景介绍、命令及使用配置

简介

百度百科:Nginx是一款轻量级、高性能的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强

 

常见应用场景

  • 反向代理
  • 负载均衡
  • 动静分离
  • 缓存服务

常用命令

【操作nginx命令需要进入nginx安装目录的sbin下】:
*** sbin下有nginx文件,由于要操作该文件,.代表当前目录,./代表当前目录下的文件,因此就是 ./nginx
查看nginx版本号: ./nginx -v
启动nginx: ./nginx
关闭nginx: ./nginx -s stop
重新加载nginx: ./nginx -s reload

 

nginx配置文件介绍

位置:nginx安装目录的conf文件夹下,nginx.conf 

...       // 全局块

events {    // events块
	...
}

http {    // http块
	...       // http全局块

	server {    // server块
        ...       // server全局块

		location [Pattern] {    // location块
			...
		}
		location [Pattern] {
			...
		}
	}
	server {
        ...

		location [Pattern] {
			...
		}
		location [Pattern] {
			...
		}
	}
	...
}

全局块

主要包括配置运行Nginx服务器的用户、允许生成的worker process数、日志存放路径、配置文件引入等;worker process值越大,支持的并发量越高。

events块

设置每个work process最大连接数等,该部分主要影响Nginx性能。

http块

  • http全局块:包含日志定义、超时时间等
  • server块:每个server块相当于一个虚拟主机
    • server全局块:配置本虚拟机监听配置
    • location块:基于Nginx接收到的请求,对其进行匹配处理、地址定向、数据缓存等

反向代理举例

1、客户端访问nginx服务器http:80端口,转发至nginx所在服务器的8080端口,假设nginx所在服务器IP为1.1.1.1

server{
    listen    80;
    server_name    1.1.1.1(或域名);

    location / {
        proxy_pass    http://127.0.0.1:8080;
    }
}

2、 根据客户端访问的不同路径跳转到不同服务端口

  • 访问http://1.1.1.1:6666/test1/ 转发至8081端口
  • 访问http://1.1.1.1:6666/test2/ 转发至8082端口
server{
    listen    6666;
    server_name    1.1.1.1(或域名);

    location /test1 {
        proxy_pass    http://127.0.0.1:8081;
    }

    location /test2 {
        proxy_pass    http://127.0.0.1:8082;
    }
}

负载均衡举例

根据客户端访问nginx服务器http:80端口,平均转发至nginx所在服务器的8080、8081、8082端口,实现负载均衡效果。假设nginx所在服务器IP为1.1.1.1 

upstream代表负载均衡服务器列表

http{

    upstream servertest{
        server 1.1.1.1:8080 weight=2;
        server 1.1.1.1:8081;
        server 1.1.1.1:8002;
    }

    server{
        listen    80;
        server_name    1.1.1.1(或域名);

        location / {
            proxy_pass    http://servertest;
        }
    }    
}

分配策略:

  • 轮询(默认)
  • weight(权重):默认为1,权重越高分配的客户端越多,例如upstream中 server 1.1.1.1:8080 weight=2;
  • ip_hash:每个客户端请求按照访问的ip哈希值分配,这样只要IP不变,每个客户端固定访问一个后端服务器,可以解决session的问题
upstream{
    ip_hash;
    server xxxx;
    server xxxx;
}

日志

Nginx在安装之后会默认开始日志,分为error_log(错误日志)、 access_log(访问日志),默认日志路径为~nginx/logs。在全局块、http块、server块、location块都可以配置日志,作用域不同。

error_log

记录http请求错误以及nginx本身的运行错误

不能设置日志打印格式,但可设置打印级别,低--->高:info、notice、warn、error、crit、alert、emert等,设置某一级别会打印>=该级别日志。

默认配置:error_log logs/error.log error; 会打印error及以上

支持的作用域:全局、http、server、location

access_log

可以通过log_format设置日志打印格式

默认配置:access_log  logs/access.log  main;

其中main是log_format的一个格式名称。 假设你可以把main改成temp,那么相应的就要有一个log_format temp 'xxx'来定义格式

支持的作用域:http、server、location

log_format

默认格式:log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

支持的作用域:http

如果没有对应的数据则默认使用-代替

---------------------------部分Nginx内置变量-------------------------

$remote_addr:客户端的IP地址
$remote_user:客户端用户名
$time_local:当前日志条目的时间
$request:HTTP请求的方法、URL和HTTP协议版本
$status:HTTP请求状态 code
$body_bytes_sent:nginx响应客户端请求时,发送到客户端的字节数,不包含响应头的大小
$http_referer:引用地址
$http_user_agent:客户端浏览器信息
$http_x_forwarded_for:网络访问路径

将log_format格式修改成如下格式,然后重启nginx才可生效。对比效果如下图。

log_format  main  'SURPRISE ~~~  | $time_local | $remote_addr | $http_host | $status | $request_time | $http_host | $request | $http_referer';

查看nginx进程 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值