Nginx

1、安装nginx

参考https://www.cnblogs.com/hanyinglong/p/5102141.html

如出现/bin/sh: ./configure: No such file or directory make[1]: *** [auto/lib/pcre/Makefile] Error 127

表示pcre安装目录不正确,需要重新按照教程安装pcre

cd /usr/local/nginx/sbin/

./nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

表示安装成功

./nginx -c /usr/local/nginx/conf/nginx.conf

启动nginx

2、配置log

配置文件存在 /usr/local/nginx/conf/nginx.conf

添加

log_format main '$remote_addr - $remote_user [$time_local] "$host:$server_port" "$request" '
'$status $body_bytes_sent "$request_body" "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$request_time"';

重启

./nginx -s stop

./nginx -s reload

3、反向代理

反向代理可以认为,能确认客户端(IP地址),通过常规途径访问服务,但在客户端配置Host域名解析,将流量导入代理服务地址。

在客户端/etc/hosts配置域名解析对应关系

10.64.45.156 8081.max.com

代理服务器需监听:80端口(TCP 默认端口80)

Nginx_第1张图片

Nginx_第2张图片

流程:

1)浏览器访问8081.max.com,通过本地host文件域名解析,找到192.168.72.49服务器(安装nginx)

2)nginx反向代理接受客户机请求,找到server_name为8081.max.com的server节点,根据proxy_pass对应的http路径,将请求转发到upstream tomcatserver1上,即端口号为8081的tomcat服务器。

4、常用命令

sbin/nginx 必须所属为 root ,启动才会以 root 身份启动

nginx -s reload :修改配置后重新加载生效

nginx -s reopen :重新打开日志文件

nginx -t 测试nginx配置文件是否正确

关闭nginx:

nginx -s stop :快速停止nginx

quit :完整有序的停止nginx

启动nginx:

nginx -c /path/to/nginx.conf

平滑重启nginx:

kill -HUP 主进程号

5、Nginx出现403 forbidden (13: Permission denied)

查看Nginx进程用户,是否是nobody。在conf/nginx.conf 中设置 user root/work 等对文件有可读或可写权限的用户。

6、Nginx支持域名泛解析

修改nginx.conf中server_name为泛域名

sever{
    listen 80;
    server_name *.test.com;
    access_log /home/work/nginx/access.log main;
    
    location /{
        proxy_pass http://127.0.0.1:8080;
    }
}

7、请求限速性转发

limit_req_zone

​
limit_req_zone

限速,每秒10个,内存区域10m,大概16万个session
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;
server
{

listen 80;
server_name xxx.xxx.xxx;
location / {

#缓存区队列burst=100个,不延期,即每秒最多可处理rate+burst个.同时处理rate个。
limit_req zone=one burst=100 nodelay;
proxy_pass http://service;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_intercept_errors on;
proxy_connect_timeout 60;
proxy_send_timeout 60;
proxy_read_timeout 120; #长时操作的设置

}

}

zone:one:10m 表示一个内存区域大小为10m,并且设定了名称为one.

rate=5r/s 表示请求的速率是1秒5个请求,当单位设置成60r/m时,并不能达到限速1分钟60次的效果,它等同于1r/s。

$binary_remote_addr 表示远程的ip地址,当此nginx前方还存在代理时,需进行处理

2.2 limit_req的参数

zone=one 表示这个参数对应的全局设置就是one的那个内存区域

burst=100 表示请求队列的长度。

nodelay 表示不延时,比如rate=5r/s,burst=10 那么来了15个请求,能一次搞定,否则,就是此秒只能搞定5个请求。一般都是不延期的设置。

8、Nginx使用Stream实现DB流量转发

下载1.9以上版本只有1.9以上版本才支持,安装过程略

注意编译的时候加上--with-stream

./configure --with-stream --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf

nginx stream conf

stream{

    upstream db {

        server 127.0.0.1:3306;

    }

# test-db

    server {

        listen 13006;

        proxy_timeout 525600m;

        proxy_pass db;

    }

}

你可能感兴趣的:(nginx,服务器,运维)