关于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,我们搞一个流量监控吧

 

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

 

posted @ 2019-12-10 17:48  不卷轮子锅  阅读(347)  评论(0编辑  收藏  举报