菜鸟学Linux 第097篇笔记 nginx配置文件

简介:

菜鸟学Linux 第097篇笔记 nginx配置文件




内容总览

nginx反向代理

nginx负载均衡

nginx缓存 proxy_cache_path

location里的一些模块

webDAV模块

nginx读写分离(使其指向不同的服务器上)









nginx反向代理

是一个类似于访问某网站的子目录,它可以指引到其它服务器以使该网站实现将一台服务器无法

满足用户的请求时,使其中一部分的用户请求指到其它服务器节点上


proxy_pass



定义访问http://192.168.11.141/forum 将其定位到后台服务器http://192.168.11.142/bbs

并转发时附带原客户端IP 使后端server可记录客户端IP  httpd.conf logformat %{X-Real-IP}i

location /forum {

    proxy_pass http://192.168.11.142/bbs;

    proxy_set_header X-Real-IP $remote_addr;

}


location ~* /forum {

    proxy_pass http://192.168.11.142;

    proxy_set_header X-Real-IP $remote_addr;

}

此为匹配到http://192.168.11.142/forum   切记proxy_pass后边不可带目录




nginx负载均衡

可以实现将网站某页面定义至后端多台服务器上 upstream

(注意要定义在http里server外)

    upstream webserver {

        ip_hash;

        server 192.168.11.142 weight=1 max_fails=2 fail_timeout=2;

        server 192.168.11.143 weight=1 max_fails=2 fail_timeout=2;

        # server 127.0.0.1:8080 backup;

    }

    此为定义负载均衡要指向的server和后端的server健康状态检查

    ip_hash 此项定义当用户初次访问该网站所指向的后端server

     下次再访问依然定义到原先所指向的server(破坏了负载均衡,但保留了会话)、

    server 指定的后端web服务器

    weight 权重

    max_fails 当后端web服务器健康状态检测失败两次时,即该服务器失联,并不再指向此服务器

    fail_timeout 指定健康状态检测超时时长,即发送一次健康检查,多少秒未收到即为超时

    backup 当所有后端web服务器失效时,所指引的server,但是和ip_hash有冲突(不清楚为何)


    

    上边的upstream只是定义负载均衡的后端web服务器,在真正的webserver还需要指引什么时候使用此负载均衡,如在

        location / {

            proxy_pass http://webserver;    (指定的名字便为upstream所指定的名字)

            proxy_set_header X-Real-IP $remote_addr;

        }

    定义好后便可当用户访问此服务器时指定到后台的两个webserver


    upstream ups-name {} 定义负载均衡服务器,这里列出几个定义到后端的负载均衡的例子


    以.php结尾的文件指向以phpserver所命名的upstream后端负载均衡

    location ~* \.php$ { fastcgi_pass http://phpserver; ...}


    访问图片时指向以pictureserver所命令的upstream后端负载均衡

    location ~* "\.(jpg|jpeg|gif|png)$" { proxy_pass http://pictureserver; ...}


    还可以再定义一个静态的服务器,这里不作详细解释,和上边区别不大呵呵。




nginx缓存 proxy_cache_path

用于将后端的web服务器所发送过来的数据缓存到本地nginx当下次用户再访问此路径或文件时

nginx可以直接提供给用户而不需要再向后端服务请求数据,nginx缓存分为3级子目录1:2:1

其含义是一级目录包含一个字符,二级目录包含2个字符,三级目录包含一个字符,

keys_zone定义其缓存名字和缓存大小, max_size定义最大缓存空间


在nginx.conf定义缓存功能

proxy_cache_path /nginx/cache/first levels=1:2 keys_zone=first:20m max_size=1g;

(注意此项只是定义nginx具有缓存功能,还得在具体的server下启用缓存才可以)

add_header X-Via "$upstream_cache_status from $server_addr";

(此项可查看缓存是否命中)


在server中启用缓存

        location / {

            proxy_pass http://webserver/;     (指定的名字便为upstream所指定的名字)

            proxy_set_header X-Real-IP $remote_addr;

            proxy_cache first;  此条便为引用上边所定义缓存,keys_zone后边的名字

            proxy_cache_valid 200 10m;  此条定义200状态的缓存保存时间

        }


    常用的三种nginx缓存

     open_log_cache 打开日志的缓存

     open_file_cache 打开文件缓存

     fastcgi_cache



    压缩请求的文件(节约带宽,当开的带宽小的时候可以使用)

     gzip on;




location里的一些模块

rewrite: URL重写模块

if (condition) {}


此模块一般用在location 当中,用来做URL重写的

break 在if中使用

return 直接返回某代码

referer可以防止其它网站盗链接此网站


rewrite示例  rewrite支持正则表达式

        location / {

            root   /web;

            index  index.html index.htm;

    rewrite "^/forum/(.*)$" /bbs/$1 last;

        }

    含义当用户访问http://192.168.11.141/forum/ 就会被定位到http://192.168.11.141/bbs/

    last含义是本次URL重写完成后,再重启下一轮检查,即重新访问以/bbs/的目录

    但last有一个问题就是如下所定义的URL重写

    rewrite "^/bbs/(.*)/images/(.*).jpg$" /bbs/$2/images/$1.jpg last;

    此条所定义的url重写会循环,为何循环就看各位的眼力了哈哈,由此而产生了另一个选项

    break 即当URL第一次重写时直接匹配,而不进行再次重新一轮检查

    rewrite "^/bbs/(.*)/images/(.*).jpg$" /bbs/$2/images/$1.jpg break;




webDAV模块

此模块可以使网站支持put等request_method




使nginx读写分离(使其指向不同的服务器上)

        location / {

            proxy_pass http://webserver;

            index  index.html index.htm;

            rewrite ^/forum/(.*)$ /bbs/$1;

            if ($request_method = "PUT") {

                proxy_pass http://192.168.11.143;

                }

        }

    当用户的请求方式为PUT时,则会直接指向后端某台服务器,即此方式即可实现将用户的请求,读

    写分离,即当后端服务器使用rsync + inotify方式实现的文件同步时,将用户的写操作全部指到

    rsync的主服务器上,此时便可实现让rsync来将用户的写数据同步到其它节点中

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1895014如需转载请自行联系原作者


Winthcloud

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
应用服务中间件 Linux 网络安全
Centos 8.0中Nginx配置文件和https正书添加配置
这是一份Nginx配置文件,包含HTTP与HTTPS服务设置。主要功能如下:1) 将HTTP(80端口)请求重定向至HTTPS(443端口),增强安全性;2) 配置SSL证书,支持TLSv1.1至TLSv1.3协议;3) 使用uWSGI与后端应用通信(如Django);4) 静态文件托管路径设为`/root/code/static/`;5) 定制错误页面(404、50x)。适用于Web应用部署场景。
1035 87
|
Ubuntu Linux Python
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
在Linux系统中,使用Tkinter库时可能会遇到中文显示乱码的问题,这通常是由于字体支持问题导致的,可以通过更换支持中文的字体来解决。
1092 0
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
|
应用服务中间件 Linux nginx
【Azure App Service】基于Linux创建的App Service是否可以主动升级内置的Nginx版本呢?
基于Linux创建的App Service是否可以主动升级内置的Nginx版本呢?Web App Linux 默认使用的 Nginx 版本是由平台预定义的,无法更改这个版本。
376 77
|
运维 监控 中间件
Linux运维笔记 - 如何使用WGCLOUD监控交换机的流量
WGCLOUD是一款开源免费的通用主机监控工具,安装使用都非常简单,它可以监控主机、服务器的cpu、内存、磁盘、流量等数据,也可以监控数据库、中间件、网络设备
|
网络协议 前端开发 应用服务中间件
nginxconf.sh 自动生成 nginx tcp 转发配置文件 conf
该脚本由 eisc.cn 开发,用于自动生成 Nginx 代理配置。它根据预设的域名、IP 和端口信息,为多个项目(如 www、work、sou 等)创建对应的 Nginx 配置文件,设置前端转发、端口对端口及后端转发规则,并生成日志和 301 跳转配置。支持自动创建 CGI 解析目录,确保各项目能够正确访问。运行时需具备 root 权限或使用 sudo。
475 9
|
负载均衡 Ubuntu 应用服务中间件
nginx修改网站默认根目录及发布(linux、centos、ubuntu)openEuler软件源repo站点
通过合理配置 Nginx,我们可以高效地管理和发布软件源,为用户提供稳定可靠的服务。
1999 13
|
负载均衡 应用服务中间件 Linux
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
这篇博客文章详细介绍了Nginx的下载、安装、配置以及使用,包括正向代理、反向代理、负载均衡、动静分离等高级功能,并通过具体实例讲解了如何进行配置。
745 5
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
|
Ubuntu 应用服务中间件 Linux
Linux下搭建Nginx环境的搭建
Linux下搭建Nginx环境的搭建
327 6
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
848 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
域名解析 网络协议 应用服务中间件
nginx server_name配置文件覆盖不生效
nginx server_name配置文件覆盖不生效