Home  >  Article  >  Operation and Maintenance  >  Detailed explanation of load balancing Nginx

Detailed explanation of load balancing Nginx

PHP中文网
PHP中文网Original
2017-06-21 13:44:592271browse

目录

  • 简介

  • 常用命令

  • 功能

    • HTTP集群

    • TCP集群

    • 代理

    • 反向代理

    • 集群

    • 重定向

    • 静态文件

    • HTTPS配置

    • 常见问题

    简介

    Nginx ("engine x") 是一款轻量级,高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。
    传输层的负载均衡有LVS(Linux) 和 NLB(Windows)

    常用命令

    • nginx -v // nginx 版本

    • start nginx // 启动nginx,不阻塞命令窗口

    • nginx -s stop | nginx -s quit // 快速停止 | 有序退出

    • nginx -s reload // 加载配置重新启动

    功能

    代理

    server {    listen 8080;                # 监听8080端口    resolver 114.114.114.114;   # dns解析地址      location / {        proxy_pass  $scheme://$host$request_uri; # 代理到哪个地址        proxy_set_header Host $http_host;        #allow 127.0.0.1;       # 允许127.0.0.1地址访问        #deny all;              # 禁止所有地址访问(allow位置在上面,所以127.0.0.1仍能访问)    }}

    反向代理

    server {    listen 8081;                    # 监听8080端口    server_name  localhost;         # 虚拟hostName    location / {        proxy_pass   http://127.0.0.1:8081; # 反向代理到的服务器    }}

    集群

    HTTP集群

    upstream clusterName {    # 通过weight设置每台服务器分配请求站的权重,值越高分配的越多。    server  127.0.0.1:9000 weight=4;     server  127.0.0.1:8082 weight=1;     # ip_hash会计算ip对应hash值,然后分配到固定服务器    ip_hash; }location / {    proxy_pass   http://clusterName; # 反向代理到群集服务器    # 设置主机头和客户端真实地址,以便服务器获取客户端真实IP    proxy_set_header   Host             $host;     proxy_set_header   X-Real-IP        $remote_addr;     proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;}

    TCP集群

    • 和http同级

      stream {server {    listen 1034;    proxy_pass app;}upstream app {    server 192.168.0.111:5672;    server 192.168.0.112:5672;}}

    重定向

    location / {    rewrite ^/(.*)$ $1 permanent;}
    • flag

    • last – 基本上都用这个Flag。

    • break – 中止Rewirte,不在继续匹配

    • redirect – 返回临时重定向的HTTP状态302

    • permanent – 返回永久重定向的HTTP状态301

    静态文件

    location /^(.*) {    root   html;                    # 根目录为html文件夹    index  $1 index.html index.htm; # $1表示正则匹配第一项}

    绑定证书

    # HTTPS server
    #
    server {
        listen       443 ssl;
        server_name  localhost;
    
        ssl_certificate      /nginx/server.cer; # 公钥(一般为公钥证书 + 中级证书)
        ssl_certificate_key  /nginx/server.key; # 私钥
    
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
    
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
        ssl_prefer_server_ciphers on;
    }

    常见问题

    • 与IIS(80端口)冲突

      • 停用IIS 80端口的网站

      • 找到HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/HTTP下的Start修改其值为0,重启电脑即可

      • 被System占用

      • 被IIS占用

      • nginx群集

        • 如果nginx服务器挂了,那我们的站点就直接挂了,可以通过keepalived组件来搭建多台nginx服务提供服务。

      • error.log 错误日志:signal process started

        • 并非错误,只要执行-s reload就会发出

      The above is the detailed content of Detailed explanation of load balancing Nginx. For more information, please follow other related articles on the PHP Chinese website!

      Statement:
      The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn