015、Nginx服务器的HTTP代理服务
本文最后更新于 69 天前,其中的信息可能已经过时,如有错误请发送邮件到wuxianglongblog@163.com

Nginx服务器的HTTP代理服务


  • 网络初始化之listen常见配置

    listen 127.0.0.1:8000;
    listen 127.0.0.1;
    listen 8000;
    listen *:8000;
    listen localhost:8000;
    listen [::]:8000;
    listen [fe80::1];
    listen unix:/var/run/nginx.sock;
  • 配置实例一:对所有请求实现一般轮询规则的负载均衡

     http {
    
          upstream live_node {                        # 配置后端服务器组
              #max_fails默认值为1,fail_timeout默认值为10s,max_fails=0表示不做检查
              server 127.0.0.1:8089 weight=1 max_fails=1  fail_timeout=10s;   
              server 127.0.0.1:8088;
              keepalive 32;
              hash $request_uri consistent;
          }
    
          server {
              listen 80;
              server_name  localhost;
              location / {
                  proxy_pass http://live_node;         # 注意:proxy_pass后面的路径不带uri时,其会将location的uri传递给后端主机
                  proxy_set_header Host $host;         # 保留客户端的真实信息
                  proxy_set_header Host $host:$server_port;
                  proxy_set_header X-Real-IP $remote_addr;
                  proxy_set_header X-Real-PORT $remote_port;
                  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
                  proxy_redirect off;
                  proxy_buffer_size  128k;
                  proxy_buffers   32 32k;
                  proxy_busy_buffers_size 128k;
              }
          }
    
          server {                    # 配置虚拟服务器8088
              listen 8088;
              server_name  localhost;
              location / {
                  root   /usr/local/nginx/html2;      
                  index  index.html index.htm;
              }
          }
    
          server {                    # 配置虚拟服务器8089
              listen 8089;
              server_name  localhost;
              location / {
                  root   /usr/local/nginx/html3;
                  index  index.html index.htm;
              }
          }
      }

    参数:keepalive connections;

    补充:由于短连接消耗前端代理服务器的资源现象严重,因此会将一部分连接定义为长连接以节省资源
    FUN:#为每个worker进程保留的空闲的长连接数量
    FUN:#定义nginx与后端服务器的保持连接的数量

    参数:hash $request_uri consistent;

    FUN:#[consistent]; 使用一致性哈希算法, 建议开启此项
    FUN:#基于指定的key的hash表来实现对请求的调度,此处的key可以直接文本、变量或二者的组合;
    FUN:#将请求分类,同一类请求将发往同一个upstream server;

  • 配置实例二:对所有请求实现加权轮询规则负载均衡

     http {
    
          upstream live_node {                        # 配置后端服务器组
              server 127.0.0.1:8089 weight=5;         # 这个处理客户端请求会多些 
              server 127.0.0.1:8088 weight=1;         # 默认 weight = 1
          }
    
          server {
              listen 80;
              server_name  localhost;
              location / {
                  #proxy_pass http://new_uri/;         # 注意:proxy_pass后面的路径是一个uri时,其会将location的uri替换为proxy_pass的uri
                  proxy_pass http://live_node;         
                  proxy_set_header Host $host;         # 保留客户端的真实信息
              }
          }
    
          server {                    # 配置虚拟服务器8088
              listen 8088;
              server_name  localhost;
              location / {
                  root   /usr/local/nginx/html2;      
                  index  index.html index.htm;
              }
          }
    
          server {                    # 配置虚拟服务器8089
              listen 8089;
              server_name  localhost;
              location / {
                  root   /usr/local/nginx/html3;
                  index  index.html index.htm;
              }
          }
      }
  • 配置实例三:对特定资源实现负载均衡

     http {
    
          upstream videobackend {                     # 配置后端服务器组视频代理
              server 127.0.0.1:8088;         
              server 127.0.0.1:8089;        
          }
    
          upstream filebackend {                      # 配置后端服务器组文件代理
              server 127.0.0.1:8888;        
              server 127.0.0.1:8889;        
          }
    
          server {
              listen 80;
              server_name  localhost;
              location /video/ {
                  proxy_pass http://videobackend;      # 视频代理
                  proxy_set_header Host $host;
                  proxy_set_header X-Real-IP $remote_addr;        #  proxy_set_header field value; 设定发往后端主机的请求报文的请求首部的值
                  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;         
              }
    
              location /file/ {
                  proxy_pass http://filebackend;       # 文件代理
                  proxy_set_header Host $host;
                  proxy_set_header X-Real-IP $remote_addr;
                  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;         
              }
          }
    
          server {                    # 配置虚拟服务器8088
              listen 8088;
              server_name  localhost;
              location /video {
                   alias   /usr/local/nginx/html2;
              }
          }
    
          server {                    # 配置虚拟服务器8089
              listen 8089;
              server_name  localhost;
              location /video {
                   alias   /usr/local/nginx/html3;
              }
          }
    
          server {                    # 文件虚拟服务器1
              listen 8888;
              server_name  localhost;
              location /file {
                  alias   /usr/local/nginx/html4;
              }
          }
    
          server {                    # 文件虚拟服务器2
              listen 8889;
              server_name  localhost;
              location /file {
                  alias   /usr/local/nginx/html5;
              }
          }
      }

    访问方式:http://127.0.0.1/video/demo.txt

    输出:this is video HTML2 demo2 8088
    输出:this is video HTML3 demo3 8089

    访问方式:http://127.0.0.1/file/demo.txt

    输出:this is file HTML4 demo4 8888
    输出:this is file HTML4 demo5 8889

    测数文件:demo.txt

    echo "this is video HTML2 demo2 8088" > ./html2/demo.txt

  • 配置实例四:不同的域名实现负载均衡

     http {
    
          upstream frontend {                     # 配置后端服务器组视频代理
              server 127.0.0.1:8088;         
              server 127.0.0.1:8089;        
          }
    
          upstream backend {                      # 配置后端服务器组文件代理
              server 127.0.0.1:8888;        
              server 127.0.0.1:8889;        
          }
    
          server {
              listen 80;
              server_name  www.frontend.com;
              location /video/ {
                  proxy_pass http://frontend;      # 前台域名代理
                  proxy_set_header Host $host;
                  proxy_set_header X-Real-IP $remote_addr;
                  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;         
              }
          }
    
          server {
              listen 8088;
              server_name  www.backend.com;
              location /video/ {
                  proxy_pass http://backend;      # 后台域名代理
                  proxy_set_header Host $host;
                  proxy_set_header X-Real-IP $remote_addr;
                  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;         
              }
          }
    
      }
  • 配置实例五:实现带有URL重写的负载均衡

     http {
    
          upstream backend {                      # 配置后端服务器组
              server 127.0.0.1:8888;        
              server 127.0.0.1:8889;        
          }
    
          server {
              listen 80;
              server_name  www.backend.com;
              index  index.html index.htm;
              location /file/ {
                  rewrite ^(/file/.*)/media/(.*)\.*$ $1/mp3/$2.mp3 last;        
              }
    
              location / {
                  proxy_pass http://frontend;      # 前台域名代理
                  proxy_set_header Host $host;      
              }
          }
    
      }

    客户端请求URL为:http://www.backend.com/file/download/media/1.mp3
    [1]:虚拟主机 location /file/ 块将该URL进行重写为:http://www.backend.com/file/download/media/mp3/1.mp3
    [2]:新的URL再有 location / 块转发转发到后端的backend服务器组中实现负载均衡

谨此笔记,记录过往。凭君阅览,如能收益,莫大奢望。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇