提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

前言Docker安装Nginx1.下载镜像2.创建挂载目录3.运行容器并从容器中复制要挂载的文件4.停止、删除容器5.创建并运行容器6.查看Nginx是否部署成功

Nginx的配置nginx配置文件的主要组成部分1.全局块2.event块3.http块3.1http全局块限制文件上传大小

3.2server块3.2.1server全局块3.2.2location块

upstream 负载均衡配置1. 轮询策略 就是依次分发执行2. Ip hash算法3. 加权轮询策略

总结

前言

部署系统少不了反向代理,这次我们用的反向代理的工具是nginx。nginx优点是非阻塞、高并发连接:官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数。接下来就讲解一下nginx的安装和配置路由转发。

Docker安装Nginx

1.下载镜像

docker pull nginx:1.25.0

如果是国产服务器麒麟V10,可以下载arrch64/v8的镜像

网站链接

docker pull nginx:1.25.0@sha256:f2ab27de75f97311b87e6287a14fad819302070a62f9b946ccf45e1fc6a508af

2.创建挂载目录

mkdir -p /home/nginx/docker-nginx

3.运行容器并从容器中复制要挂载的文件

docker run --name nginx -p 80:80 -d nginx:1.25.0

docker cp nginx:/etc/nginx/nginx.conf /home/nginx/docker-nginx/

docker cp nginx:/etc/nginx/conf.d/ /home/nginx/docker-nginx/conf/

docker cp nginx:/usr/share/nginx/html/ /home/nginx/docker-nginx/html/

docker cp nginx:/var/log/nginx/ /home/nginx/docker-nginx/logs/

4.停止、删除容器

docker stop nginx

docker rm nginx

5.创建并运行容器

docker run -p 80:80 \

-v /home/nginx/docker-nginx/nginx.conf:/etc/nginx/nginx.conf \

-v /home/nginx/docker-nginx/logs:/var/log/nginx \

-v /home/nginx/docker-nginx/html:/usr/share/nginx/html \

-v /home/nginx/docker-nginx/conf:/etc/nginx/conf.d \

-v /etc/localtime:/etc/localtime \

--name nginx \

--restart=always \

-d nginx:1.25.0

6.查看Nginx是否部署成功

curl localhost:80

Nginx的配置

nginx配置文件的主要组成部分

全局块events块http块

1.全局块

就是配置文件从头开始到events块之间的内容,主要设置的是影响nginx服务器整体运行的配置指令,主要包括配置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等, 比如上面第一行配置的:

worker_processes 1;

此处可以优化配置: worker 进程数应该设置为服务器 CPU 的核数。

grep -c processor /proc/cpuinfo # 查看CPU核数

worker_processes 2; # 2核CPU的配置

worker_cpu_affinity 01 10;

worker_processes 4; # 4核CPU的配置

worker_cpu_affinity 0001 0010 0100 1000;

worker_processes 8; # 8核CPU的配置

worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 1000000;

2.event块

events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 word process 可以同时支持的最大连接数等。

events {

worker_connections 1024;

}

上述例子就表示每个 work process 支持的最大连接数为 1024.

优化最大连接数可以看链接: 优化 Nginx 单个进程允许的最大连接数

3.http块

包括http全局块,以及多个server块

3.1http全局块

http 全局块配置的指令包括文件引入、 MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。

限制文件上传大小

lient_max_body_size 用于设置最大的允许客户端请求主体的大小。

在请求头中有 “Content-Length” ,如果超过了此配置项,客户端会收到 413 错误,即请求的条目过大。

http {

client_max_body_size 100m; # 设置客户端最大的请求主体大小为 100 M

}

3.2server块

这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。 每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机 而每个 server 块也分为全局 server 块,以及可以同时包含多个 location 块。

3.2.1server全局块

最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置。

server {

listen 80;

listen [::]:80;

server_name localhost;

#access_log /var/log/nginx/host.access.log main;

}

3.2.2location块

一个 server 块可以配置多个 location 块。 主要作用是根据请求地址路径的匹配,匹配成功进行特定的处理 这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

location / {

root /usr/share/nginx/html;

index index.html index.htm;

client_max_body_size 1g;

}

location /zhongshan.ui.wechat/ {

proxy_pass http://192.168.0.101:8080/zhongshan.ui.wechat/;

client_max_body_size 100m;

}

此项目的的全局块、event块为一体,将server块分离开来,便于我们编写查阅。 Server块在这边 此处可以编写多个conf,暴露出多个端口。

nginx.conf文件是如下:

user nginx;

worker_processes auto;

error_log /var/log/nginx/error.log notice;

pid /var/run/nginx.pid;

events {

worker_connections 1024;

}

http {

include /etc/nginx/mime.types;

default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;

#tcp_nopush on;

keepalive_timeout 65;

client_max_body_size 1g;

#gzip on;

include /etc/nginx/conf.d/*.conf;

}

default.conf文件如下:

server {

listen 80;

listen [::]:80;

server_name localhost;

#access_log /var/log/nginx/host.access.log main;

location / {

root /usr/share/nginx/html;

index index.html index.htm;

client_max_body_size 1g;

}

location /zhongshan.ui.wechat/ {

proxy_pass http://192.168.0.101:8080/zhongshan.ui.wechat/;

client_max_body_size 100m;

}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html

#

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root /usr/share/nginx/html;

}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80

#

#location ~ \.php$ {

# proxy_pass http://127.0.0.1;

#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

#

#location ~ \.php$ {

# root html;

# fastcgi_pass 127.0.0.1:9000;

# fastcgi_index index.php;

# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

# include fastcgi_params;

#}

# deny access to .htaccess files, if Apache's document root

# concurs with nginx's one

#

#location ~ /\.ht {

# deny all;

#}

}

upstream 负载均衡配置

这一块单独拎出来,因为涉及到服务器集群进行负载均衡的配置。 Nginx提供的负载均衡策略有2种:内置策略和扩展策略。 内置策略为轮询(默认),加权轮询,Ip hash。 扩展策略: URL_HASH(第三方) 和 FAIR(第三方)

轮询策略Ip hash算法加权轮询策略

1. 轮询策略 就是依次分发执行

upstream name {

server 192.168.1.100:8000;

server 192.168.1.101:8000;

}

2. Ip hash算法

在使用ip_hash方式处理负载均衡时,Web服务器的状态可以使用down(表示当前的server暂时不参与负载均衡),但是不能使用weight(权重)和backup(预留的备份机器)。

upstream name {

ip_hash;

server 192.168.1.100:8000;

server 192.168.1.101:8000;

}

3. 加权轮询策略

在配置中,weigth参数表示权值,权值越高则被分配到的概率越大。除此之外,还可以设定每台Web服务器在负载均衡调度中的状态,常用的参数:max_fails允许请求失败的次数默认为l、fail_timeoutq请求失败后暂停服务的时间、backup预留的备份机器、down表示当前的server暂时不参与负载均衡。

#配置负载均衡服务器组名称、地址、权重

upstream web_server {

#weigrt权重值(越大访问率大),在fail_timeout时间内检查后端服务器max_fails次,失败则被剔除;

server 192.168.1.123 weight=1 fail_timeout=30s max_fails=2;

server 192.168.1.91 weight=1 fail_timeout=30s max_fails=2;

}

总结

以上就是nginx的安装和配置的总结啦,希望对你有用。后续将讲解一下数据的安装配置。

精彩内容

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。