阿里云服务器的真实配置(性能调优)

99 阅读5分钟

nginx的作用

  • http代理、反向代理:作为web服务最常用的功能
  • 负载均衡
  • web缓存

nginx.conf内容结构

一般在centos的/etc/nginx/nginx.conf或者/usr/local/nginx/nginx.conf ,它是一个树型结构,依次是:全局块、events块,http块(server块(locaction块))。

...              #全局块

events {         #events块
   ...
}

http      #http块
{
    ...   #http全局块
    server        #server块
    { 
        ...       #server全局块
        location [PATTERN]   #location块
        {
            ...
        }
        location [PATTERN] 
        {
            ...
        }
    }
    server
    {
      ...
    }
    ...     #http全局块
}

真实的阿里nginx.conf

一般在nginx目录下面有一个主目录放nginx.conf,在这个目录下面还有一个子目录services放多个web的应用程序配置,例如A.conf,B.conf,如下:


# nginx.conf是一个树结构 依次是
# 全局
#    events
#    http
#       server
# 注释写了 速融科技定义参数 表示发布时此部分的参数要根据项目实际情况需要修改

# 全局块配置*****1
# 指定哪个用户运行nginx 没有指定时就默认nobody用户
user  nobody;

# 调优一,利用好多核cpu资源,nignx工作进程数 按cpu核心数或cpu线程数 ,可以它的倍数,也可以配为11个cpu核心,一般最多8个
worker_processes  auto;
# 为每个进程分配cpu个数,如果上面配了2个,则这个可以配为 10 01
worker_cpu_affinity  auto;
# 一个nginx进程打最多文件描述数目
worker_rlimit_nofile    65536;

# 速融科技定义参数
# 启用或禁用守护进程模式,即后台运行模式,如果前台服务则执行命令nginx -g "damemo off"
# supervisor 管理nginx 必须把daemon on关掉,即,或者通过nginx命令 daemon off关闭方式运行。
# daemon on;
# 存放nginx守护进程的pid文件路径。
# mac的pid地址
# pid /opt/homebrew/var/run/nginx.pid;
# centos服务器上的地址
pid		/var/run/nginx.pid;

# error_log	/data/logs/error/nginx_error.log  info;
# google_perftools_profiles /data/www/tmp/tcmalloc;

# events*******2
events
{
  # 使用epoll的I/O模型,用它来高效处理异步事件
	# use	epoll;
	# 调优二:每一个nignx工作进程数允许的最大连接数,缺省是1024,最大是65535
	worker_connections	65535;
}

# http配置*******3
http
{
  # 指网络资源的媒体类型,也是前端请求的资源类型
	include	mime.types;
  # 默认文件类型, 默认为text/plain
	default_type	application/octet-stream;
  # http中配置对子集server 孙集location均生效
	charset  utf-8;

    # 调优: 调整缓冲区大小*****
	server_names_hash_bucket_size 128;
	# 客户端请求头部的缓冲区大小,一般参考系统的分页大小
	client_header_buffer_size 4k;
	large_client_header_buffers 4 32k;
  # 速融科技定义参数
	#上传文件的大小限制
	client_max_body_size 2048m;

	# 打开文件的缓存
	open_file_cache max=65536 inactive=20s;
	# 多长时间检查一次缓存的有效信息
	open_file_cache_valid 30s;
	# 如果缓存中的文件1次都没有用则移除
	open_file_cache_min_uses 1;

	# 调优四:磁盘与tcp socket之间的直接拷贝,避免还要缓冲区
	sendfile on;
	# 解决网络堵塞 nginx在一个数据包里立与发送所有头文件,解决延迟问题
	tcp_nopush on;
	# http 连接超时,默认是60秒
	keepalive_timeout 60;
	# nginx不要缓存数据而是一段一段的发送
	tcp_nodelay on;
	# 安全性 隐藏nginx的版本号和操作系统信息
	server_tokens off;
	port_in_redirect off;

	# 调优 使用FastCGI缓存,避免重复生成页面
	fastcgi_connect_timeout	300;
	fastcgi_send_timeout 300;
	fastcgi_read_timeout 300;
	fastcgi_buffer_size 64k;
	fastcgi_buffers	4 64k;
	fastcgi_busy_buffers_size 128k;
	fastcgi_temp_file_write_size 128k;

	# 调优三:open gzip,压缩传输量***
  # 开启gzip压缩
	gzip on;
  # 不压缩临界值,大于1k的才压缩
	gzip_min_length	1k;
  # 压缩缓冲区
	gzip_buffers 16 64k;
  # 压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
	gzip_http_version 1.1;
  # 压缩级别 1-10 数字越大压缩越好但时间越长
	gzip_comp_level	2;
  # 进行压缩的文件类型
	gzip_types	text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
  # gzip_types text/plain application/x-javascript text/css application/xml application/javascript;
  # 跟Squid等缓存服务有关,on的话会在Header里增加"Vary: Accept-Encoding"
  gzip_vary on;
  # IE6Gzip不怎么友好,不给它Gzip了
  gzip_disable "MSIE [1-6]\.(?!.*SV1)";


	#Proxy 反向代理的调优参数
	proxy_connect_timeout	600;
	proxy_read_timeout	600;
	proxy_send_timeout	600;
	proxy_buffer_size	16k;
	proxy_buffers	4	32k;
	proxy_busy_buffers_size	64k;
	proxy_temp_file_write_size	64k;

  #GeoIp
  #geoip_country /etc/nginx/geoip/GeoIP.dat;
  #geoip_city    /etc/nginx/geoip/GeoLiteCity.dat;

	# Limit
	limit_req_zone $binary_remote_addr  zone=xxx:10m rate=5r/s;


	# Log format
	log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
		  '$status $body_bytes_sent "$http_referer" '
		  '"$http_user_agent" $http_x_forwarded_for';

  # server 全局块********4
  # nginx无法匹配任何其它server时,则返回403禁止访问
  server
	{
        listen 80 default;
        server_name _;
        return 403;
	}

  # server块配置 ****
	# 支持全局配置+多配置文件 导入其它路径下的配置文件 这样有利于管理, 缺省nginx下面有一个子目录servers,重新命名了vhosts而已
	include servers/*.conf;
}

某一个web应用程序,例如vue发布后的dist程序,gwork-web.conf

server
{
        # 速融科技定义参数 端口和子域名
        listen       80;
	      # listen       443 ssl ;
        server_name  gwork.bjsurong.com;
        # 若http没有配,server配以后对子集location均生效,location不需要再配charset
        charset utf-8;

        #ssl on;
        #ssl_certificate .../xxxx.crt;
        #ssl_certificate_key .../xxxx.key;
        #ssl_session_timeout 5m;
        #ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        #ssl_ciphers ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:-LOW:!aNULL:!eNULL;
        #ssl_prefer_server_ciphers on;

        # 速融科技定义参数,定义vue发布的dist内容,放到服务器哪个目录
        location / {
	         root /data/gwork/gworkweb/dist;
	         # nginx部署vue刷新401问题
           try_files $uri $uri/ /index.html;
           index    index.html index.htm;

        }

        # 速融科技定义参数,反向定义前后分离程序,后端程序的ip和端口
        location /prod-api/ {
                proxy_pass http://127.0.0.1:8080/;
                proxy_set_header Host $http_host;
			          proxy_set_header X-Real-IP $remote_addr;
		          	proxy_set_header REMOTE-HOST $remote_addr;
			          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        location ~* /(WEB-INF|data|\.svn) {

                return http://gwork.bjsurong.com;

        }

        location ~* \.(htacess|tar.gz|tar|zip|sql)$ {

                return http://gwork.bjsurong.com;

        }


        error_page  404              /404.html;
        location = /404.html {
            root   html;
        }

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # 调优 记录访问和错误日志会消耗系统资源
        access_log  off;
        error_log   off;
        # access_log  /data/gwork-log/nginx_log/access/webpc_access.log  access;
        # error_log   /data/gwork-log/nginx_log/error/webpc_error.log crit;
}



```js