架构师课程笔记day04——Nginx

Posted 我才是真的封不觉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了架构师课程笔记day04——Nginx相关的知识,希望对你有一定的参考价值。

 大纲

1.从单体到集群过渡

 

 

 

 

 

 

2.nginx


 2.1什么是nginx

 2.2常见服务器

 2.3nginx在架构中所处位置

2.4使用率,性能,市场占有率等信息

 

 

 2.5正反向代理啥意思

正向代理

 反向代理

示例

 

2.6安装步骤

Nginx安装步骤 常用命令等

2.7请求链路

 

2.8进程模型

通用模型 一个管事的 多个打工的

2.9通用命令

-s stop  强制关机

-s quit 保存当前配置然后关机

-s reload 刷新配置

-h 帮助命令 里面还有些别的常用命令

[root@VM-4-3-centos sbin]# ./nginx -s stop
[root@VM-4-3-centos sbin]# ./nginx -s quit
nginx: [error] open() "/var/run/nginx/nginx.pid" failed (2: No such file or directory)
[root@VM-4-3-centos sbin]# ./nginx
[root@VM-4-3-centos sbin]# ./nginx -s quit
[root@VM-4-3-centos sbin]# ./nginx -h
nginx version: nginx/1.22.1
Usage: nginx [-?hvVtTq] [-s signal] [-p prefix]
             [-e filename] [-c filename] [-g directives]

Options:
  -?,-h         : this help
  -v            : show version and exit
  -V            : show version and configure options then exit
  -t            : test configuration and exit
  -T            : test configuration, dump it and exit
  -q            : suppress non-error messages during configuration testing
  -s signal     : send signal to a master process: stop, quit, reopen, reload
  -p prefix     : set prefix path (default: /usr/local/nginx/)
  -e filename   : set error log file (default: /var/log/nginx/error.log)
  -c filename   : set configuration file (default: conf/nginx.conf)
  -g directives : set global directives out of configuration file

2.10核心配置文件各个配置的含义

以下是一个nginx.conf示例

#user  nobody;
worker_processes  2;

#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;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server 
        listen       888;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        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;
        

 常用配置

    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;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    gzip  on;
    #限制最小压缩,小于1字节文件不会压缩
    gzip_min_length 1;
    #压缩比 文件越大 压缩越多
    gzip_comp_level 3;
    #定义压缩文件的类型
    gzip_types text/plain application/javascript  image/png text/css text/xml image/gif image/jpeg;

location 的匹配规则 空格 :默认匹配,普通匹配 location / root /home; = :精确匹配 location = /imooc/img/face1.png root /home; ~* :匹配正则表达式,不区分大小写 #符合图片的显示 location ~ \\.(GIF|jpg|png|jpeg) root /home; ~ :匹配正则表达式,区分大小写 #GIF必须大写才能匹配到 location ~ \\.(GIF|jpg|png|jpeg) root /home; ^~ :以某个字符路径开头 location ^~ /imooc/img root /home;

 跨域与防盗链

#允许跨域请求的域,*代表所有
add_header 'Access-Control-Allow-Origin' *;
#允许带上cookie请求
add_header 'Access-Control-Allow-Credentials' 'true';
#允许请求的方法,比如 GET/POST/PUT/DELETE
add_header 'Access-Control-Allow-Methods' *;
#允许请求的header
add_header 'Access-Control-Allow-Headers' *;

#对源站点验证 防盗链
valid_referers *.imooc.com;
#非法引入会进入下方判断
if ($invalid_referer)
return 404;

2.11负载均衡 url_hash least_conn

根据每次请求的 url 地址, hash 后访问到固定的服务器节点。
upstream tomcats 
# url hash
hash $request_uri;
# 最少连接数
# least_conn
server 192.168.1.173:8080;
server 192.168.1.174:8080;
server 192.168.1.175:8080;

server 
listen 80;
server_name www.tomcats.com;
location / 
proxy_pass http://tomcats;

2.12 一致性hash原理

这玩意比较通用 见之前redis那篇文章 的4.1部分

分布式缓存技术-redis分布式篇 (redis主从复制,哨兵机制,集群搭建)_我才是真的封不觉的博客-CSDN博客

2.13Nginx的缓存

我们都知道静态文件浏览器一般都会给缓存住

 那么 在nginx中设置缓存的失效时间可以用到以下

expires 10s:  10s后缓存失效

expires @22h30m:22h30m 缓存失效

expires -1h:当前时间前一个小时缓存失效 说明不缓存

expires epoch:这个也是不缓存

expires off:nginx关闭缓存设置 使用浏览器中默认缓存设置

expires max:缓存永不过期

 具体使用方式如下

1. 浏览器缓存:
加速用户访问,提升单个用户(浏览器访问者)体验,缓存在本地
2. Nginx缓存
缓存在nginx端,提升所有访问到nginx这一端的用户
提升访问上游(upstream)服务器的速度
用户访问仍然会产生请求流量
控制浏览器缓存:
location /files 
alias /home/imooc;
# expires 10s;
# expires @22h30m;
# expires -1h;
# expires epoch;
# expires off;
expires max;

2.14Nginx的反向代理缓存

当我们的静态资源文件除了存储在这个中间nginx之外还存在 下游的服务器的时候,那么可以使用

 如下缓存设置

# proxy_cache_path 设置缓存目录
# keys_zone 设置共享内存以及占用空间大小
# max_size 设置缓存大小
# inactive 超过此时间则被清理
# use_temp_path 临时目录,使用后会影响nginx性能
proxy_cache_path /usr/local/nginx/upstream_cache keys_zone=mycache:5m max_size=1g inactive=1m use_temp_path=
location / 
proxy_pass http://tomcats;
# 启用缓存,和keys_zone一致
proxy_cache mycache;
# 针对200和304状态码缓存时间为8小时
proxy_cache_valid 200 304 8h;

2.15使用Nginx配置HTTPS域名证书

1. 安装 SSL 模块 要在 nginx 中配置 https ,就必须安装 ssl 模块,也就是 : http_ssl_module 进入到 nginx 的解压目录: /home/software/nginx-1.16.1 新增 ssl 模块 ( 原来的那些模块需要保留 ) ./configure \\ --prefix=/usr/local/nginx \\ --pid-path=/var/run/nginx/nginx.pid \\ --lock-path=/var/lock/nginx.lock \\ --error-log-path=/var/log/nginx/error.log \\ --http-log-path=/var/log/nginx/access.log \\ --with-http_gzip_static_module \\ --http-client-body-temp-path=/var/temp/nginx/client \\ --http-proxy-temp-path=/var/temp/nginx/proxy \\ --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \\ --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \\ --http-scgi-temp-path=/var/temp/nginx/scgi \\ --with-http_ssl_module 编译和安装 make make install 2. 配置 HTTPS ssl 证书 *.crt 和 私钥 *.key 拷贝到 /usr/local/nginx/conf 目录中。 新增 server 监听 443 端口: server listen 443; server_name www.imoocdsp.com; # 开启ssl ssl on; # 配置ssl证书 ssl_certificate 1_www.imoocdsp.com_bundle.crt; # 配置证书秘钥 ssl_certificate_key 2_www.imoocdsp.com.key; # ssl会话cache ssl_session_cache shared:SSL:1m; # ssl会话超时时间 ssl_session_timeout 5m; # 配置加密套件,写法遵循 openssl 标准 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; location / proxy_pass http://tomcats/;

2.16动静分离两种实现方式

CDN

 Nginx

 

openstack云计算实践-老男孩架构师课程教案笔记分享


高级架构师系列视频课程6-CentOS7.1+Openstack L版全球最新实战文档分享(上)

高级架构师系列视频课程7-CentOS7.1+Openstack L版全球最新实战文档分享(下)

http://blog.oldboyedu.com/openstack/



高级架构师系列视频课程6-CentOS7.1+Openstack L版全球最新视频讲解(上)

高级架构师系列视频课程7-CentOS7.1+Openstack L版全球最新视频讲解(下)

http://blog.oldboyedu.com/supporting-video/


本文出自 “老男孩linux培训” 博客,请务必保留此出处http://oldboy.blog.51cto.com/2561410/1757194

以上是关于架构师课程笔记day04——Nginx的主要内容,如果未能解决你的问题,请参考以下文章

《Linux运维架构师课程 - 门徒班》招生中

《Linux运维架构师课程 - 门徒班》招生中

51CTO学院老男孩教育Linux运维+顶级架构师课程攻略

IT课程开课吧·Java企业级分布式架构师010期Java架构师 老男孩运维28期最新完整

《Linux运维架构师课程 - 门徒班》招生中

云计算学习大纲是什么?怎么学习云计算?