• 关于NGINX在wnidows下面和linux下面的多站点的反向代理的配置


    原创文章,转载注明出处

    nginx作为一款优秀的反向代理软件,以其好用,易于搭建负载均衡的网站集群而著称,这里分别记录一下工作中用到nginx作为负载以及多站点发布的时候一些配置和注意事项

    一  nginx在linux下使用配置,对于多站点以及负载 这里建议最好的方式是使用  sites-enabled 的方式,把配置文件分开来配置,清晰明了。

    下面来看一下整个的文件结构:

    1。看一下关于nginx.conf的配置

    user www-data;
    worker_processes 8;
    # worker_cpu_affinity 0001 0010 0100 1000;
    worker_rlimit_nofile 10240;
    pid /run/nginx.pid;
    
    events {
       use epoll;
            worker_connections 51200;
            # multi_accept on;
    }
    
    http {
    
            ##
            # Basic Settings
            ##
    
            sendfile on;
            tcp_nopush on;
            tcp_nodelay on;
            keepalive_timeout 65;
            types_hash_max_size 2048;
            server_tokens off;
    
            server_names_hash_bucket_size 512;
            # server_name_in_redirect off;
    
            include /etc/nginx/mime.types;    #  注意这里需要注意的,特别涉及到上传不成功的时候,需要检查这里
            default_type application/octet-stream;
    
            client_max_body_size 5m;
    
            ##
            # SSL Settings
            ##
    
            #ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
            #ssl_prefer_server_ciphers on;
    
            ##
            # Logging Settings
            ##
            log_format  main  'realip:$http_x_forwarded_for slbip:$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"'
                      '"$upstream_addr" "$upstream_status" "$upstream_response_time"';
            access_log /home/nginx_logs/access.log main;
    
            error_log /home/nginx_logs/error.log;
    
            ##
            # Gzip Settings
            ##
    
            #gzip on;
            #gzip_disable "msie6";
    
            #gzip_vary on;
            #gzip_proxied any;
            #gzip_comp_level 6;
            #gzip_buffers 16 8k;
            #gzip_http_version 1.1;
            #gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    
            gzip on;
            gzip_min_length 1000;
            gzip_buffers 4 8k;
            gzip_types text/* text/css application/javascript. application/x-javascript;
            gzip_comp_level 9;
            gzip_proxied any;
            gzip_vary on;
            gzip_http_version 1.0;
            output_buffers 4 32k;
            postpone_output 1460;
            client_header_buffer_size 128k;
            large_client_header_buffers 4 256k;
            client_header_timeout 1m;
            client_body_timeout 1m;
            send_timeout 1m;
    
            limit_conn_zone $binary_remote_addr zone=addr:10m;
    
    
            ###start####
            #add_header Access-Control-Allow-Origin *;
            #add_header Access-Control-Allow-Headers X-Requested-With;
            #add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
            ###end ###
    
            ##
            # Virtual Host Configs   注意,这里就是开启配置文件包含,我们为多站点分开配置
            ##
    
            include /etc/nginx/conf.d/*.conf;
            include /etc/nginx/sites-enabled/*;
    }

    2。看一看包含文件的配置:

    在conf.d中配置  反向代理的真实服务器的地址

    如果有多台,这里直接多配置几台就可以,即可实现负载均衡

    upstream maple-api {
        server localhost:6000 max_fails=2 fail_timeout=15s;
        server localhost:6001 max_fails=2 fail_timeout=15s;
        server localhost:6002 max_fails=2 fail_timeout=15s;
    }

     这里可以用DOCKER的方式,模拟多台服务器的负载均衡,看看是否nginx能真实起效果

    3。关于server的配置,来看看配置

     配置文件详细:

    server {
            listen             80;
            #listen             8080;
            server_name mapleadmin.srfish.com;    #注意这里的域名,就是拿来区别,多站点反向代理的
            #index index.html index.htm;
    
    	#配置日志
    	access_log /home/nginx_logs/maple-admin/maple-admin.cn_access.log main;   #注意这边的日志,如果不存的话,你估计得手工创建一个
    	error_log /home/nginx_logs/maple-admin/maple-admin.cn_error.log;    
    	#ssl on;    #这里的SSL配置,如果启用了证书,可以加一个证书的
            #ssl_certificate   /etc/nginx/sslkey/vpclub.pem;
            #ssl_certificate_key  /etc/nginx/sslkey/vpclub.key;
            #ssl_session_timeout 5m;
            #ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            #ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
            #ssl_prefer_server_ciphers on;
    	
            #对 "/" 启用负载均衡 
            location / {
                    proxy_redirect off;
                    proxy_set_header Host $host;
                    #proxy_set_header X-Real-IP $remote_addr; 
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    #允许客户端请求的最大单个文件字节数
                    client_max_body_size 10m;
                    #缓冲区代理缓冲用户端请求的最大字节数,可以理解为先保存到本地再传给用户
                    client_body_buffer_size 1024k;
                    #跟后端服务器连接超时时间 发起握手等候响应超时时间      
                    proxy_connect_timeout 40;
                    #连接成功后 等待后端服务器响应时间 其实已进入后端的排队之中等候处理
                    proxy_read_timeout 90;
                    #代理请求缓存区 这个缓存区间会保存用户的头信息一共Nginx进行规则处理 一般只要能保存下头信息即可
                    proxy_send_timeout 90;
                    #同上 告诉Nginx保存单个用的几个Buffer最大用多大空间
                    proxy_buffer_size 1024k;
                    proxy_buffers 32 1024k;
                    #如果系统很忙的时候可以申请国内各大的proxy_buffers 官方推荐 *2
                    proxy_busy_buffers_size 2048k;
                    #proxy 缓存临时文件的大小
                    proxy_temp_file_write_size 2048k;
                    proxy_next_upstream error timeout invalid_header http_500 http_503 http_404; 
                    proxy_max_temp_file_size 128m;
    
                    #以这种格式来使用后端的web服务器
                    proxy_pass http://maple-admin;    #注意这边的写法,这个  名字,一定要同  oonf.d/*中的配置文件对应,不能乱写,不然代理不到正确的网址去
                    #index  index.html index.htm index.jsp;
    
            }
    
            #location /status   #开启NGIN的状态支持,可以写一个脚本,了解NGINX当前的流量以及活动SESSION
            #{
            #        stub_status on;
            #        access_log off;
            #}
    }
    

    二   nginx在WINDOWS下面的配置,WINDOWS在配置的时候,我也尝试过配置site-enables,但是没有成功,如果有成功的大佬,希望大佬赐教,这里是直接配置在nginx.conf里面的

    整个配置文件

    #user  nobody;
    worker_processes  1;
    
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #pid        logs/nginx.pid;
    
    
    events {
        worker_connections  1024;
    }
    
    
    http {
        include       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  logs/access.log  main;
    	error_log   logs/error.log;
    	
        sendfile        on;
        #tcp_nopush     on;
        #gzip  on;
    	
    	tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        server_tokens off;
    
        server_names_hash_bucket_size 512;
    	
    	
    	gzip on;
        gzip_min_length 1000;
        gzip_buffers 4 8k;
        gzip_types text/* text/css application/javascript. application/x-javascript;
        gzip_comp_level 9;
        gzip_proxied any;
        gzip_vary on;
        gzip_http_version 1.0;
        output_buffers 4 32k;
        postpone_output 1460;
        client_header_buffer_size 128k;
        large_client_header_buffers 4 256k;
        client_header_timeout 1m;
        client_body_timeout 1m;
        send_timeout 1m;
    
        limit_conn_zone $binary_remote_addr zone=addr:10m;
    
    	
    	##
        # Virtual Host Configs
        ##
    
        #include conf.d/*.conf;
        #include sites-enabled/*;
    
    
        # another virtual host using mix of IP-, name-, and port-based configuration
        #
    	server {
            listen             80;
            server_name  www.site.info;
    
    	#配置日志
    	access_log  logs/site_logs/site.cn_access.log main;
    	error_log   logs/site_logs/site.cn_error.log;
    	
            #对 "/" 启用负载均衡 
            location / {
                    proxy_redirect off;
                    proxy_set_header Host $host;
                    #proxy_set_header X-Real-IP $remote_addr; 
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    #允许客户端请求的最大单个文件字节数
                    client_max_body_size 10m;
                    #缓冲区代理缓冲用户端请求的最大字节数,可以理解为先保存到本地再传给用户
                    client_body_buffer_size 1024k;
                    #跟后端服务器连接超时时间 发起握手等候响应超时时间      
                    proxy_connect_timeout 40;
                    #连接成功后 等待后端服务器响应时间 其实已进入后端的排队之中等候处理
                    proxy_read_timeout 90;
                    #代理请求缓存区 这个缓存区间会保存用户的头信息一共Nginx进行规则处理 一般只要能保存下头信息即可
                    proxy_send_timeout 90;
                    #同上 告诉Nginx保存单个用的几个Buffer最大用多大空间
                    proxy_buffer_size 1024k;
                    proxy_buffers 32 1024k;
                    #如果系统很忙的时候可以申请国内各大的proxy_buffers 官方推荐 *2
                    proxy_busy_buffers_size 2048k;
                    #proxy 缓存临时文件的大小
                    proxy_temp_file_write_size 2048k;
                    proxy_next_upstream error timeout invalid_header http_500 http_503 http_404; 
                    proxy_max_temp_file_size 128m;
    
                    #以这种格式来使用后端的web服务器
                    proxy_pass http://jjdata-site;
                    #index  index.html index.htm index.jsp;
    
            }
    	}
    	upstream jjdata-site {
            server localhost:8011 max_fails=2 fail_timeout=15s;
            #server localhost:7001 max_fails=2 fail_timeout=15s;
    	}
    	
    	server {
            listen             80;
            server_name  admin.site.info;
    
    		#配置日志
    		access_log  logs/admin_logs/admin.cn_access.log main;
    		error_log   logs/admin_logs/admin.cn_error.log;
    	
            #对 "/" 启用负载均衡 
            location / {
                    proxy_redirect off;
                    proxy_set_header Host $host;
                    #proxy_set_header X-Real-IP $remote_addr; 
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    #允许客户端请求的最大单个文件字节数
                    client_max_body_size 10m;
                    #缓冲区代理缓冲用户端请求的最大字节数,可以理解为先保存到本地再传给用户
                    client_body_buffer_size 1024k;
                    #跟后端服务器连接超时时间 发起握手等候响应超时时间      
                    proxy_connect_timeout 40;
                    #连接成功后 等待后端服务器响应时间 其实已进入后端的排队之中等候处理
                    proxy_read_timeout 90;
                    #代理请求缓存区 这个缓存区间会保存用户的头信息一共Nginx进行规则处理 一般只要能保存下头信息即可
                    proxy_send_timeout 90;
                    #同上 告诉Nginx保存单个用的几个Buffer最大用多大空间
                    proxy_buffer_size 1024k;
                    proxy_buffers 32 1024k;
                    #如果系统很忙的时候可以申请国内各大的proxy_buffers 官方推荐 *2
                    proxy_busy_buffers_size 2048k;
                    #proxy 缓存临时文件的大小
                    proxy_temp_file_write_size 2048k;
                    proxy_next_upstream error timeout invalid_header http_500 http_503 http_404; 
                    proxy_max_temp_file_size 128m;
    
                    #以这种格式来使用后端的web服务器
                    proxy_pass http://jjdata-admin;
                    #index  index.html index.htm index.jsp;
    
            }
    	}
    	upstream jjdata-admin {
            server localhost:8010 max_fails=2 fail_timeout=15s;
            #server localhost:7001 max_fails=2 fail_timeout=15s;
    	}
    
    }
    

     其实是跟linux环境下是一样的,只是放在一个文件里面

    三   测试一把负载均衡

     访问同一个文件的时候,会不定时的切换负载,说明配置成功,这负载均衡的配置真是简单到让人难以想像,强大。

    四  再来个zabbix,我们搞一个流量监控吧

     是的,装逼就要装到家,一定要帅才行,好了,布置和监控完毕

  • 相关阅读:
    java 封装练习题3
    java 封装练习题2
    java 封装练习题1
    java 面向对象练习题6
    java 面向对象练习题5
    java 面向对象练习题4
    java 练习 计算5的阶乘 5!的结果是?
    java 练习 题目四:控制台输出九九乘法表
    java 练习 题目三:这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?
    java 练习 题目二:我国古代数学家张邱建在《算经》中出了一道“百钱买百鸡”的问题,题意是这样的:5文钱可以买一只公鸡,3文钱可以买一只母鸡,1文钱可以买3只雏鸡。现在用100文钱买100只鸡,那么各有公鸡、母鸡、雏鸡多少只?请编写程序实现。
  • 原文地址:https://www.cnblogs.com/freewsf/p/12018144.html
Copyright © 2020-2023  润新知