云计算学习100天-第29天

Nginx的TCP/UDP调度器(四层代理)

1、编译安装必须要使用--with-stream参数开启4层代理模块

tar -xf nginx-1.22.1.tar.gz

cd nginx-1.22.1/

yum -y install gcc make pcre-devel openssl-devel

./configure --with-stream

make && make install

2、修改nginx配置文件

...

stream {

upstream backend { #创建集群,名称为backend

server 192.168.99.100:22; #后端SSH服务器IP和端口

server 192.168.99.200:22;

}

server { #调用集群

listen 12345; #Nginx代理监听的端口,可以自己定义

proxy_pass backend; #调用backend集群

}

}

http {

.. ..

}

3、启动服务

复制代码
/usr/local/nginx/sbin/nginx

自定义报错页面

HTTP常见状态码列表:

200 正常

301 & 302 重定向

400 请求语法错误

401 访问被拒绝

403 禁止访问

404 资源找不到

414 请求URI头部太长

500 服务器内部错误

502 代理服务器无法正常获取下一个服务器正常的应答

vim conf/nginx.conf

...

charset utf-8; #仅在需要中文时修改该选项,可以识别中文

...

error_page 404 /404.html; #当网站发生404报错时,给用户看的页面

.. ..

echo "抱歉!您访问的页面不存在呢?" > html/404.html

#重置服务

/usr/local/nginx/sbin/nginx -s reload

查看nginx服务状态信息

--with-http_stub_status_module开启status状态页面

tar -xf nginx-1.22.1.tar.gz

cd nginx-1.22.1/

yum -y install gcc make pcre-devel openssl-devel

./configure --with-stream --with-http_stub_status_module

make && make install

修改nginx配置文件

vim /usr/local/nginx/conf/nginx.conf

....

server {

listen 80;

server_name localhost;

location /status { #定义状态页面

stub_status on;

}

charset utf-8;

....

curl 192.168.99.5/status

Active connections: 1

server accepts handled requests

1 1 1

Reading: 0 Writing: 1 Waiting: 0

说明:

Active connections:当前活动的连接数量,有多少人访问网站

Accepts:已经接受客户端的连接总数量,有多少人曾经来过

Handled:已经处理客户端的连接总数量

Requests:客户端发送的请求数量

Reading:当前服务器正在读取客户端请求头的数量,请求头:客户现在正在发的请求,要看什么页面,要求服务器传过去

Writing:当前服务器正在写响应信息的数量,指服务器正在给客户回应信息

Waiting:当前多少客户端在等待服务器的响应,

如果想要只允许自己访问,看到nginx的状态信息,其他人不能看到,可以做以下配置

vim /usr/local/nginx/conf/nginx.conf

....

server {

listen 80;

server_name localhost;

location /status { #定义状态页面

stub_status on;

allow 192.168.99.5; #允许99.5访问

deny all; #其他人全部拒绝

}

charset utf-8;

....

优化Nginx并发量

#优化前使用ab高并发测试,使用web1主机作为海量客户,访问proxy主机

ab -n 100 -c 100 http://192.168.99.5/ #-n任务量,-c是连接数

#优化Linux内核参数(最大文件数量)

ulimit -n #查看最大文件数量

1024

ulimit -n 100000 #临时设置最大文件数量

#优化后测试服务器并发量,成功

ab -n 2000 -c 2000 http://192.168.99.5/

#永久设置最大文件数量

vim /etc/security/limits.conf

.. ..

* soft nofile 100000

* hard nofile 100000

End of file

修改Nginx配置文件,增加并发量

vim /usr/local/nginx/conf/nginx.conf

.. ..

#user nobody;

worker_processes 2; #与CPU核心数量一致

.. ..

events {

worker_connections 50000;

}

.. ..

优化Nginx数据包头缓存,支持超长地址

#优化前,使用脚本测试超长头部请求是否能获得响应,默认情况下nginx无法支持长地址栏,会报414错误

vim /root/lnmp_soft/buffer.sh

#!/bin/bash

URL=http://192.168.99.5/index.html?

for i in {1..5000}

do

URL={URL}vi=$i

done

curl $URL #经过5000次循环后,生成一个超长的URL地址

#执行脚本报错

./buffer.sh

<html>

<head><title>414 Request-URI Too Large</title></head>

<body>

<center><h1>414 Request-URI Too Large</h1></center> #访问失败

<hr><center>nginx/1.22.1</center>

</body>

</html>

#修改Nginx配置文件,增加数据包头部缓存大小

cd /usr/local/nginx

cp conf/nginx.conf.default conf/nginx.conf #还原配置文件

vim conf/nginx.conf

.. ..

http {

client_header_buffer_size 200k; #添加,请求包头信息的缓存大小

large_client_header_buffers 4 200k; #添加,大请求包头部信息的缓存个数与容量

include mime.types;

default_type application/octet-stream;

.. ..

/usr/local/nginx/sbin/nginx -s reload

#优化后,使用脚本测试超长头部请求是否能获得响应

/root/lnmp_soft/buffer.sh #成功

修改Nginx配置文件,定义对静态页面的缓存时间

vim /usr/local/nginx/conf/nginx.conf

.. ..

server {

listen 80;

server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;

location / {

root html;

index index.html index.htm;

}

location ~* \.(jpg|txt|png|html)$ { #新添加

expires 30d; #新添加,定义客户端缓存时间为30天

} #新添加

.. ..

/usr/local/nginx/sbin/nginx -s reload