目 录CONTENT

文章目录

负载均衡Nginx

管理员
2024-08-22 / 0 评论 / 0 点赞 / 49 阅读 / 13304 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2024-08-23,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

文献:

nginx官网:nginx: download

英文文档:nginx documentation

Windows

我用的版本号: nginx/Windows-1.20.1

1、解压后的文件夹:

2、进入到conf 文件夹。我们的配置是 nginx.conf

3、添加如下的配置

3.1 配置代码:
upstream localhost_server{

server localhost:8096 ;

server localhost:8095 ;

}

location / {

    proxy_pass http://localhost_server;

}

4、双击 nginx.exe 文件

5、安装成功的话,在文件管理器中可以查到对应的进程

还可以访问你配置的地址:

6、按照步骤,恭喜你搭载好了

命令

  1. 重新加载配置文件 nginx -s reload

  2. 启动Nginx服务 nginx -c /etc/nginx/nginx.conf

  3. 查看Nginx的版本号:nginx -V

  4. 启动Nginx:start nginx

  5. 快速停止或关闭Nginx:nginx -s stop

  6. 正常停止或关闭Nginx:nginx -s quit

  7. 杀死Nginx所有进程 taskkill /im nginx.exe /f

问题整理

问题一

每次更改config之后,需要 执行以下 reload 命令,但是我每次reload之后,在服务器中,nginx 访问是正常的,在本地机器上就不行。推荐你执行以下 杀死所有nginx进程之后,重新双击 nginx.exe 文件,最后再去执行reload命令

问题二

当服务器中的程序池挂掉后,访问iis会报503的问题。

策略配置

nginx策略:轮询(默认)

max_fails=1

假设配置两个节点A和B,手动把B节点关掉,则在Nginx轮询到B节点时,发现该节点不可用,会自动转去调A节点,而不会返回失败,也就是说,调用方并不会收到一次调用失败(一次都不会)。

  upstream localhost_server{

        server 127.0.0.1:8096 max_fails=1 ;

        server 127.0.0.1:8095 max_fails=1;

    }

    location / {

            proxy_pass http://localhost_server;

			proxy_next_upstream error timeout http_503 ; #如果你还有其他的问题,可以参考下面,多个用英文空格分开

   }

//proxy_next_upstream 配置

proxy_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | http_429 | non_idempotent | off ...;

Default:    proxy_next_upstream error timeout;

Context:    http, server, location

指定应将请求传递到下一个服务器的情况:

error             # 与服务器建立连接,向其传递请求或读取响应头时发生错误;

timeout           # 在与服务器建立连接,向其传递请求或读取响应头时发生超时;

invalid_header    # 服务器返回空的或无效的响应;

http_500          # 服务器返回代码为500的响应;

http_502          # 服务器返回代码为502的响应;

http_503          # 服务器返回代码为503的响应;

http_504          # 服务器返回代码504的响应;

http_403          # 服务器返回代码为403的响应;

http_404          # 服务器返回代码为404的响应;

http_429          # 服务器返回代码为429的响应(1.11.13);

non_idempotent    # 通常,请求与 非幂等 方法(POST,LOCK,PATCH)不传递到请求是否已被发送到上游服务器(1.9.13)的下一个服务器; 启用此选项显式允许重试此类请求;

off               # 禁用将请求传递给下一个服务器。

添加好配置后,再次访问就不会再有503的错误了

我停掉的8095已经不会访问了

添加日志

location /status {       #访问位置为/status

            stub_status on;     #打开状态统计功能

            access_log off;     #关闭此位置的日志记录

        }

---

配置多个证书和域名

worker_processes  1;

events {

    worker_connections  1024;

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    upstream default_server{

        server IP:PORT ;

    }

    server {

   	  listen 443 ssl;

     	  server_name xxx.com www.xxx.com; 

     	  ssl_certificate url/xxx.com_bundle.pem; 

     	  ssl_certificate_key url/xxx.com.key; 

	  ssl_protocols TLSv1.2 TLSv1.3;

	  #以下三个配置,可以让你的域名在myssl的评分是A+

	  ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

   	  ssl_prefer_server_ciphers on;

	  add_header Strict-Transport-Security "max-age=31536000";

	  location / {	 

	     proxy_set_header       Host $host;  

	     proxy_set_header  X-Real-IP  $remote_addr;  

	     proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;  

	     proxy_set_header X-Forwarded-Proto  $scheme;

             proxy_pass http://default_server/;  

	  }

    }

   server {

   	  listen 443 ssl;

     	  server_name xxx.cn www.xxx.cn; 

     	  ssl_certificate url/xxx.cn_bundle.pem; 

     	  ssl_certificate_key url/xxx.cn.key; 

	  #以下三个配置,可以让你的域名在myssl的评分是A+

	  ssl_protocols TLSv1.2 TLSv1.3;

	  ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

   	  ssl_prefer_server_ciphers on;

	  add_header Strict-Transport-Security "max-age=31536000";

 	  location / {	 

	     proxy_set_header       Host $host;  

	     proxy_set_header  X-Real-IP  $remote_addr;  

	     proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;  

	     proxy_set_header X-Forwarded-Proto  $scheme;

             proxy_pass http://default_server/; 

	  }

    }

  

    server {

 	    listen 80;

 	    server_name xxx.com www.xxx.com; 

      	    rewrite ^/(.*)$ https://www.xxx.com/$1 permanent;

    }

    server {

 	    listen 80;

 	    server_name xxx.cn www.xxx.cn; 

      	    rewrite ^/(.*)$ https://www.xxx.cn/$1 permanent;

    }

}

配置外网访问服务器图片

访问路径:https://www.XXXX.com/图片名称

 location ~ .*\.(gif|jpg|jpeg|png)$ {  

                root /xxx/files/img/;#指定文件存放路径  

         }

配置外网访问服务器图片-url指定

访问路径:https://www.XXX.com/img/图片名称

我的实际服务器路径是:**/xxx/files/img/**

为何下面的路径配置中,却没有/img

因为ningx反代的时候,会自动在/xxx/files/后面拼上img

因此location后面的路由 务必是 你的实际文件路径

 location /img/ {          

             root /xxx/files/;#指定图片存放路径  

          }

0

评论区