ECS(CentOS)-简单配置Nginx负载均衡

PM2&Nginx:

npm install pm2 -g
yum install nginx -y

启动Nginx并设置开机自动运行

systemctl start nginx.service
systemctl enable nginx.service

创建全局命令

ln -s /usr/sbin/nginx /usr/local/bin/nginx

主要文件位置

  • which nginx # or whereis nginx:查看主程序文件
  • /etc/init.d/:下创建了启动脚本nginx(需手动配置),支持service nginx start命令
  • /var/log/nginx日志文件夹,/var/log/nginx/error.log:错误日志文件,/var/log/nginx/access.log:访问日志文件
  • /etc/nginx/nginx.confNginx全局站点配置文件,日志文件可以在/etc/nginx/nginx.conf中配置,默认读取的配置文件
  • /etc/nginx/conf.d自定义Nginx站点配置文件存放目录
  • /etc/nginx/conf.d/default.conf:网站默认站点配置
  • /usr/share/nginx/html:网站文件默认存放目录
  • sites-available:则是管理大量站点时服务器的一种通用配置。
  • sites-enabled:则是一种单独配置,需要使用enabled时,需要使用ln命令软连接到相应网站。

cd /etc/nginx

cat nginx.conf | grep -v '#'  #查看nginx配置文件

user nginx; # 运行的用户 cat /etc/group 查看所有用户
worker_processes auto; # 启动进程,通常设置成和cpu的数量相等
#全局错误日志及PID文件
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

#工作模式及连接数上限
events {
    worker_connections 1024; #单个后台worker process进程的最大并发链接数
}

#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
    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  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;   #连接超时时间
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

    server { 
        listen       80 default_server; # 监听的端口
        listen       [::]:80 default_server; 
        server_name  _; # 用域名方式访问的地址
        root         /usr/share/nginx/html;

        include /etc/nginx/default.d/*.conf;
        
        # 一个server里可以有多个location
        location / {   # 当是/的时候,
            root   /usr/share/nginx/html;    # root是存放首页的路径
            index  index.html index.htm;     # 访问的页面,访问index.html
        }

        error_page 404 /404.html; # 当访问错误的时候,会显示的页面
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html; # 当访问错误的时候,会显示的页面
            location = /50x.html {
        }

        #静态文件,nginx自己处理
        location ~ ^/(images|javascript|js|css|flash|media|static)/ {
            root /var/www/virtual/htdocs;
            #过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。
            expires 30d;
        }
    }


}

编辑 /etc/nginx/nginx.conf 在 http {}中添加

include /etc/nginx/sites-enabled/*;

在/etc/nginx 目录下自己创建sites-enabled和sites-available文件夹

          配置文件放在sites-avaliable文件夹中,需要创建软连接在sites-enabled

cd /etc/nginx
mkdir sites-enabled
mkdie sites-available
cd sites-available
vim test.conf
    #设定负载均衡的服务器列表
    upstream mysvr {
        #weigth参数表示权值,权值越高被分配到的几率越大
        #本机上的Squid开启3128端口
        server 192.168.8.1:3128 weight=5;
        server 192.168.8.2:80  weight=1;
        server 192.168.8.3:80  weight=6;
    }
    server {
        listen 80;
        server_name <IP地址> www.xxx.com;
        location / {
            # 将server 80商品反向代理到3000/4000
            proxy_pass http://mysvr;
        }
    }
ln -s /etc/nginx/sites-available/test.conf /etc/nginx/sites-enabled/test.conf

其他属性:

  • max_fails属性,默认为1,表示服务器失败的最多次数,如果超过该值,表示在fail_timeout时间内请求将不再分配到该服务器上。 如果设置为0,Nginx会将这台Server置为永久无效状态
  • fail_timeout属性,默认为10秒,表示服务器的失败无效时长
  • backup属性,备份机,所有服务器失效了之后,启用该服务器
  • down属性,表示该台服务器无效
upstream tomcats {
    #表示100服务器的分配比例是2,失败最大次数为3,失败后重新失效时长为15秒
    server 192.168.0.100:8080 weight=2 max_fails=3 fail_timeout=15;
    #表示101服务器无效
    server 192.168.0.101:8080 down;
    #表示102服务器为备份服务器
    server 192.168.0.102:8080 backup;
}
  • max_conns:表示该服务器的最大连接数量,默认为0,表示不限制。注意:1.5.9之后的版本才有这个配置

编写node项目文件,并使用pm2启动3000,4000端口

netstat -tpln # 查看端口情况

Nginx常用命令

名称 命令
指定配置文件启动nginx nginx -c /etc/nginx/nginx.conf
关闭nginx,完整有序的停止nginx,保存相关信息 nginx -s quit
关闭nginx,快速停止nginx,可能并不保存相关信息 nginx -s stop
重新载入nginx,当配置信息修改需要重新加载配置是使用 nginx -s reload
测试nginx配置文件是否正确 nginx -t -c /etc/nginx/nginx.conf
CentOS7.x命令
systemctl start  [unit type] 启动服务
systemctl restart  [unit type] 重启服务
systemctl status [unit type] 服务状态
systemctl stop  [unit type] 停止服务
systemctl enable [unit type] 设置服务开机启动
systemctl disable [unit type] 设备服务禁止开机启动
systemctl is-active [unit type] 查看服务是否运行
systemctl is-enable [unit type] 查看服务是否设置为开机启动

从CentOS 7.x开始,CentOS开始使用systemd服务来代替daemon命令:

例:使用 systemctl start nginx 代替 service nginx start

发布了88 篇原创文章 · 获赞 16 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_36157085/article/details/102524144