2.了解nginx常用的配置
阅读原文时间:2023年07月08日阅读:4

作者

微信:tangy8080

电子邮箱:914661180@qq.com

更新时间:2019-07-10 20:56:10 星期三

欢迎您订阅和分享我的订阅号,订阅号内会不定期分享一些我自己学习过程中的编写的文章

如您在阅读过程中发现文章错误,可添加我的微信 tangy8080 进行反馈.感谢您的支持。

文章主题

了解nginx常用的配置

前置条件

已经安装好了nginx,如未安装请参考nginx安装和基本配置

正文

auth_basic的认证配置

auth_basic在nginx里用的应该比较多,经常用于一些不能认证功能应用的基础授权。例如您可以将其用在kibana中

1.首先需要生成用户名和密码

使用openssl来生成,生成命令(openssl在安装nginx的时候已经安装)

echo "kibana:$(openssl passwd -crypt 1234567890)" >>/usr/local/nginx/conf/httpasswd
echo "consul:$(openssl passwd -crypt 1234567890)" >>/usr/local/nginx/conf/httpasswd
echo "etcd:$(openssl passwd -crypt 1234567890)" >>/usr/local/nginx/conf/httpasswd
2.为需要授权的资源添加授权配置
server{
      listen 50813;
      location / {
        auth_basic    "please login";
        auth_basic_user_file /usr/local/nginx/conf/httpasswd;
        proxy_http_version 1.1;
        proxy_pass  http://kibana;
      }
    }

auth_basic_user_file:是用户名和密码的配置文件地址

ssl的配置

首先您需要先购买证书,如果只是想用于实验,可以尝试Let’s Encrypt,申请地址:https://www.sslforfree.com/, 需要按照提示在域名管理控制台添加TXT记录

    server{
        listen 443;
        server_name rabbitmq.honeysuckle.site;
        ssl on;
        ssl_certificate   /usr/local/nginx/cert/certificate.crt;
        ssl_certificate_key  /usr/local/nginx/cert/private.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        location / {
            proxy_set_header Host $http_host;
            proxy_set_header X-Forward-For $http_x_forwarded_for;
            proxy_http_version 1.1;
            proxy_pass  http://mqweb_backends;
        }
    }
  • ssl on 为指定虚拟机启用HTTPS protocol
  • ssl_certificate 当前虚拟主机使用PEM格式的证书文件
  • ssl_certificate_key 当前虚拟主机上与其证书匹配的私钥文件
  • ssl_protocols 支持ssl协议版本
  • ssl_session_timeout 客户端连接可以复用ssl session cache中缓存的ssl参数的有效时长,默认5m
  • ssl_ciphers 指定启用的密码。密码以OpenSSL库理解的格式指定,可以使用“ openssl ciphers”命令查看完整列表。

常用的负载均衡算法

轮询策略(轮询加权/round-robin)
http {
    upstream tomcats {
        server 192.168.0.180:8080 weight=1 fail_timeout=20s;
        server 192.168.0.181:8080 weight=2 fail_timeout=20s;
    }
    server {
        server_name www.test.com
        listen 80;
        location / {
            proxy_pass http://tomcats;
        }
    }
}
  • 上面通过weight参数指定了轮询机率,weight和访问比率成正比,用于后端服务器性能不均的情况。
  • 如果不加权重,将按照默认的等比权重进行代理
ip_hash(ip绑定)
http {
    upstream tomcats {
        ip_hash;
        server 192.168.0.180:8080 weight=1 fail_timeout=20s;
        server 192.168.0.181:8080 weight=2 fail_timeout=20s;
    }
    server {
        server_name www.test.com
        listen 80;
        location / {
            proxy_pass http://tomcats;
        }
    }
}

使用ip_hash来解决有状态的会话,每个访客固定访问一个后端服务器

fair
http {
    upstream tomcats {
        fair;
        server 192.168.0.180:8080;
        server 192.168.0.181:8080;
    }
    server {
        server_name www.test.com
        listen 80;
        location / {
            proxy_pass http://tomcats;
        }
    }
}

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

url_hash
http {
    upstream tomcats {
        hash $request_uri;
        server 192.168.0.180:8080;
        server 192.168.0.181:8080;
    }
    server {
        server_name www.test.com
        listen 80;
        location / {
            proxy_pass http://tomcats;
        }
    }
}

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效

常用参数说明

https://www.cnblogs.com/yinzhengjie/p/7788237.html

引用链接

https://blog.csdn.net/xqhys/article/details/81788358