【nginx笔记】Web服务器、反向代理、负载均衡、Http缓存

【理论】

1、什么是nginx?

Nginx是开源的轻量级web服务器、反向代理服务器,以及负载均衡器和HTTP缓存器。其特点是高并发、高性能和低内存。 (Nginx 专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验,最大能支持 50000 个并发连接数。 Nginx 还支持热部署,它的使用特别容易,几乎可以做到 7x24 小时不间断运行。)

【实战】

1、基本指令

# 启动(默认配置文件)
$ ./nginx
# 重新启动
$ ./nginx -s reload
# 启动指定某个配置文件
$ ./nginx -c /usr/local/nginx/conf/xxnginx.cong
# 停止
$ ./nginx -s stop

2、默认配置文件讲解(阿里云)

# 每个配置项由配置指令和指令参数 2 个部分构成
#user  nobody;  # 指定Nginx Worker进程运行以及用户组
worker_processes  1;   # 

#error_log  logs/error.log;  # 错误日志的存放路径  和错误日志
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;   # 进程PID存放路径

# 事件模块指令,用来指定Nginx的IO模型,Nginx支持的有select、poll、kqueue、epoll 等。不同的是epoll用在Linux平台上,而kqueue用在BSD系统中,对于Linux系统,epoll工作模式是首选
events { 
    use epoll;
  # 定义Nginx每个进程的最大连接数, 作为服务器来说: worker_connections * worker_processes,
  # 作为反向代理来说,最大并发数量应该是worker_connections * worker_processes/2。因为反向代理服务器,每个  并发会建立与客户端的连接和与后端服务的连接,会占用两个连接
    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;
    # 是否开启高效传输模式 on开启 off关闭
    sendfile        on;
    #减少网络报文段的数量
    #tcp_nopush     on;
    #keepalive_timeout  0;
    # 客户端连接保持活动的超时时间,超过这个时间之后,服务器会关闭该连接
    keepalive_timeout  65;
    #gzip  on;

    # 虚拟主机的配置
    server {
        listen       80; # 虚拟主机的服务端口
        server_name  localhost; #用来指定IP地址或域名,多个域名之间用空格分开
        #charset koi8-r;
        #access_log  logs/host.access.log  main;

        #URL地址匹配
        location / {
            root   html;  # 服务默认启动目录
            index  index.html index.htm; #默认访问文件,按照顺序找
        }

        #error_page  404              /404.html;   #错误状态码的显示页面

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #

        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one

        #location ~ /\.ht {
        #    deny  all;
        #}
    }

    # another virtual host using mix of IP-, name-, and port-based configuration
    #

    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;
    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

    # HTTPS server
    #
    #server {

    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;
    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;
    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;
    
    #    location / {
    #        root   html;
    #        index  index.html index.htm
    #    }
    #}
}

变量参考:https://www.cnblogs.com/wjoyxt/p/6178731.html

3、配置示例(阿里云)

#全局配置 =========================================================
#指定nginx运行的用户及用户组,默认为nobody。
#user administrator administrators;  
​
#允许生成的进程数,默认为1
#worker_processes 2;  
​
#指定nginx进程运行文件存放地址
#pid /nginx/pid/nginx.pid;  
​
#定位全局错误日志文件,级别。这个设置可以放入全局块,http块,server块。
#级别以此为:debug|info|notice|warn|error|crit|alert|emerg。
#debug输出最多,crir输出最少,根据实际环境而定
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
​
​
#events 配置 =======================================================
events {
    #设置网路连接序列化,防止惊群现象发生,默认为on
    accept_mutex on;   
​
    #设置一个进程是否同时接受多个网络连接,默认为off
    multi_accept on;  
​
    #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
    #use epoll; 
​
    #最大连接数,默认为512
    worker_connections  1024;    
}
​
#http 配置 =========================================================
http {
    #文件扩展名与文件类型映射表
    include       mime.types;   
​
    #默认文件类型,默认为text/plain
    default_type  application/octet-stream;
​
    #自定义格式,main为日志格式的名称,可自行设置,后面引用
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                            '$status $body_bytes_sent "$http_referer" '
    #                          '"$http_user_agent" "$http_x_forwarded_for"';
​
    #引用日志main格式    
    #access_log  logs/access.log  main; 
​
    #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
    sendfile on;   
​
    #连接超时时间,默认为75s,0;  无限时间,可以在http,server,location块。
    keepalive_timeout 65;  
​
    #开启gzip压缩
    gzip  on;
​
    #负载均衡服务器设置
    upstream mysvr {   
      server 127.0.0.1:7878;
      server 192.168.10.121:3333 backup;  #热备
    }
​
    #访问异常页面配置
    error_page 404 https://www.baidu.com; 
​
    #配置虚拟主机的相关参数
    server {
        #单连接请求上限次数。
        keepalive_requests 120; 
        
        #监听端口
        listen       4545;   
​
        #监听地址,可以是ip,可以是域名
        server_name  127.0.0.1; 
​
        #设置主机基本信息,请求路由,以及各种页面的处理情况   
        location / {  #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
            #根目录
            root   html; 
 
            #设置默认页
            index  index.html index.htm; 
​
            #请求转向mysvr 定义的服务器列表
            #proxy_pass  http://mysvr;  
        }
    }
​
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值