nginx官网学习

水贴,没理清楚。建议不看。
中文官网
英文官网
在这里插入图片描述
它的内容可以说相比其他的技术技术是要少的。
为什么要用nginx?
现在是信息大爆炸的时代,瞬间并发的场景是非常的多的。
在这里插入图片描述
如上图,分布式是解决并发的一个思路。
Apache和Nginx都有能力提供每秒钟庞大的请求服务,但是随着并发数量的增加,Apache的性能开始下降,然而Nginx的性能几乎不会下降。所以使用nginx偏向更多。

nginx中几个重要的概念:反向代理、负载均衡、动静分离。

代理的概念
现在很多企业,都有自己的代理。通过另一个服务器,转到目标服务器。比如你–公司代理服务器–目标服务器。
正向和反向的区别:公司代理服务器–目标服务器(反向隐藏了目标服务器)。
负载均衡的概念:
在这里插入图片描述
比如上面这些地方,分布式tomcat01搜索服务器、02图片/文件服务器、03产品详细服务器等等。将我们一个页面的数据请求压力分给不同的服务器处理。这就负载均衡。

动静分离的概念
资源分为静态和动态。不同的理解不一样。一般来说html、js、css等是静态资源,而动态资源的理解是要和数据库或其他存储库交互就是动态,不交互的静态。
这个不难理解,当前企业中一个项目都有静态资源服务器。里面主要是国际化、图标、json串、主题等等。

常用命令:

/usr/local/webserver/nginx/sbin/nginx #启动
/usr/local/webserver/nginx/sbin/nginx -s reload            # 重新载入配置文件
/usr/local/webserver/nginx/sbin/nginx -s reopen            # 重启 Nginx
/usr/local/webserver/nginx/sbin/nginx -s stop              # 停止 Nginx

配置文件位置:/usr/local/webserver/nginx/conf/nginx.conf这是重点。
详细的介绍还是以英文官网为主的好。
主要就是上面第一张图的三部分:基本的HTTP服务器功能(Basic HTTP server features)、其他HTTP服务器功能(Other HTTP server features)、邮件代理服务器功能(Mail proxy server features)
配置文件中:全局块、events块、http块
结构:

...              #全局块

events {         #events块
   ...
}

http      #http块
{
    ...   #http全局块
    server        #server块
    { 
        ...       #server全局块
        location [PATTERN]   #location块
        {
            ...
        }
        location [PATTERN] 
        {
            ...
        }
    }
    server
    {
      ...
    }
    ...     #http全局块
}
# 从开始到events都是全局块
user www www; # 创建好的运行使用的用户 www及密码
worker_processes 2; #设置值和CPU核心数一致
error_log /usr/local/webserver/nginx/logs/nginx_error.log crit; #日志位置和日志级别
pid /usr/local/webserver/nginx/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 65535; # 最连接数
# evnets块 主要是nginx服务器域用户的网络连接
events
{
  use epoll;
  worker_connections 65535;
}
# http块,这块是我们最常配置的
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';
  
#charset gb2312;
     
  server_names_hash_bucket_size 128;
  client_header_buffer_size 32k;
  large_client_header_buffers 4 32k;
  client_max_body_size 8m;
     
  sendfile on;
  tcp_nopush on;
  keepalive_timeout 60;
  tcp_nodelay on;
  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;
  gzip on; 
  gzip_min_length 1k;
  gzip_buffers 4 16k;
  gzip_http_version 1.0;
  gzip_comp_level 2;
  gzip_types text/plain application/x-javascript text/css application/xml;
  gzip_vary on;
 
  #limit_zone crawler $binary_remote_addr 10m;
 # 下面是server虚拟主机的配置
 server
  {
    listen 80;#监听端口
    server_name localhost;#域名
    index index.html index.htm index.php;
    root /usr/local/webserver/nginx/html;#站点目录
      location ~ .*\.(php|php5)?$
    {
      #fastcgi_pass unix:/tmp/php-cgi.sock;
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index index.php;
      include fastcgi.conf;
    }
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
    {
      expires 30d;
  # access_log off;
    }
    location ~ .*\.(js|css)?$
    {
      expires 15d;
   # access_log off;
    }
    access_log off;
  }

}

反向代理(多个服务器)和负载均衡(一个服务器下多个微服务器)场景:
模拟(你还可以分更细):(下面不能作为实际参考,只是为了个人学习理解

tomcat01:文件服务器content  请求格式 http://10.186.1.251:9001/content/content/10001/image?id=83u9nfds24nnfjs
tomcat02:登陆及权限服务器acount  请求格式 http://10.186.1.251:9002/acount/acount/isLogin
tomcat03:商品信息服务器shop  请求格式 http://10.186.1.251:9003/shop/shop/ProdcutId/info
nginx服务器:http://10.186.1.54:8721

做一个映射:

http://10.186.1.54:8721/content  ---  tomcat01
http://10.186.1.54:8721/acount  ---  tomcat02
http://10.186.1.54:8721/shop  ---  tomcat03

主要是http和server的配置:

upstream myserver {
 server http://10.186.1.251:9001;
 server http://10.186.1.251:9002;
 server http://10.186.1.251:9003;
}
 server
  {
    listen 8721; #监听端口
    server_name 10.186.1.54; #域名
       location ~ /
    {
      proxy_pass  http://myserver;
    }
      location ~ /content/
    {
      proxy_pass  http://10.186.1.251:9001;
    }
    location ~ /acount/
    {
	  proxy_pass  http://10.186.1.251:9002;
    }
    location ~ /shop/
    {
	   proxy_pass  http://10.186.1.251:9003
    }
    access_log off;
  }

注意开放端口。可以看到重点在location的正则表示。

负载均衡的相关策略:
1、轮询(默认):按时间顺序逐一分配到后端服务器。
2、weight(权重):默认为1,权重越高被分配的客户端越多。
3、ip_hash:根据ip的hash值方式访问,这样可以保证每个访客固定访问一个后端服务器,可解决session的问题。

动静分离:就是将动态请求和静态请求分开。
比如asset目录下就是静态。通过参数expries设置,可以使浏览器缓存过期。在缓存有效期内,不需要再去请求。此种方式特别适合那些不常变动的资源。
配置和上面差别不大。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值