Docker安装Nginx并配置nginx配置文件(麒麟V10搭建nginx)

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


前言

部署系统少不了反向代理,这次我们用的反向代理的工具是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的安装和配置的总结啦,希望对你有用。后续将讲解一下数据的安装配置。

  • 37
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用Docker安装Nginx配置SSL证书的步骤如下: 1. 准备SSL证书:根据不同的云服务商,证书文件的后缀可能有所不同。腾讯云的证书文件后缀为.crt和.key,阿里云的证书文件后缀为.pem和.key。确保证书文件正确并可用。 2. 下载最新的Nginx镜像:使用以下命令下载最新的Nginx镜像: ``` docker pull nginx ``` 3. 创建目录:创建几个目录,用于挂载Nginx容器内的配置文件和日志文件。使用以下命令创建目录: ``` mkdir -p /usr/local/nginx/{conf,html,logs,ssl} ``` 4. 启动一个Nginx临时容器:使用以下命令启动一个Nginx临时容器,并将配置文件复制到主机上: ``` docker run --name nginx-temp -d nginx docker cp nginx-temp:/etc/nginx/nginx.conf /usr/local/nginx/conf/nginx.conf docker rm -f nginx-temp ``` 5. 上传SSL证书:将SSL证书上传到服务器的指定目录,例如将证书文件复制到/usr/local/nginx/ssl目录下。 6. 修改nginx.conf配置文件:编辑/usr/local/nginx/conf/nginx.conf文件,配置SSL证书的路径。确保路径是在容器内的地址,而不是主机的地址。 7. 正式启动Nginx:使用以下命令启动Nginx容器,并将挂载目录和端口映射配置好: ``` docker run --name nginx -p 80:80 -p 443:443 \ -v /usr/local/nginx/html:/usr/share/nginx/html \ -v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /usr/local/nginx/conf.d:/etc/nginx/conf.d \ -v /usr/local/nginx/logs:/var/log/nginx \ -v /usr/local/nginx/ssl:/etc/nginx/ssl \ --privileged=true -d --restart=always nginx ``` 8. 检查Nginx是否成功启动:使用以下命令检查Nginx容器是否成功启动: ``` docker ps ``` 以上是使用Docker安装Nginx配置SSL证书的步骤。请根据实际情况进行操作。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* *3* [docker安装nginx配置ssl证书](https://blog.csdn.net/LuoHuaX/article/details/127320361)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值