Nginx 基础介绍和常用场景
Posted HaSaKing_721
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx 基础介绍和常用场景相关的知识,希望对你有一定的参考价值。
前言
nginx 同 Apache 一样都是一种 Web 服务器。基于 REST 架构风格,以统一资源描述符(Uniform Resources Identifier)URI 或者统一资源定位符(Uniform Resources Locator)URL 作为沟通依据,通过 HTTP 协议提供各种网络服务。
一、Nginx 有哪些优点
- Nginx 使用基于事件驱动架构,使得其可以支持数以百万级别的 TCP 连接。
- 高度的模块化和自由软件许可证使得第三方模块层出不穷(这是个开源的时代啊)。
- Nginx 是一个跨平台服务器,可以运行在 Linux、Windows、FreeBSD、Solaris、AIX、Mac OS 等操作系统上。
- Nginx 是一款自由的、开源的、高性能的 HTTP 服务器和反向代理服务器;同时也是一个 IMAP、POP3、SMTP 代理服务器。
二、正向代理
直接上图,方便理解
举个简单的例子:比如你需要访问某个部署在内网服务器,但条件有限,只能通过VPN访问内网,这就是正向代理
正向代理最大的特点是客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。
正向代理,“它代理的是客户端”,是一个位于客户端和原始服务器(Origin Server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器)。
三、反向代理
直接上图,方便理解
一台服务器一个应用以及满足不了业务需求,需要把一个应用扩展成多个;客户端通过访问一个IP,实现负载均衡,也就是通过部署多台服务器来解决访问人数限制的问题。
这里扩展下 Tengine
客户端是无感知代理的存在的,反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。因为客户端不需要任何配置就可以访问。
反向代理的作用:
- 保证内网的安全,通常将反向代理作为公网访问地址,Web 服务器是内网。
- 负载均衡,通过反向代理服务器来优化网站的负载。
四、常用场景
一、HTTP服务器
配置nginx.conf中的server
http {
server {
listen 80;
server_name localhost;
client_max_body_size 1024M;
# 默认location
location / {
root /usr/local/var/html;# 本地html存放的路径
index index.html index.htm;
}
}
}
访问 http://localhost/test.html 指向 /usr/local/var/html/test.html
注意:如果访问图片出现403 Forbidden错误,可能是因为nginx.conf 的第一行user配置不对,默认是#user nobody;是注释的,linux下改成user root; macos下改成user 用户名 所在组; 然后重新加载配置文件或者重启,再试一下就可以了, 用户名可以通过who am i 命令来查看。
二、静态服务器
http {
server {
listen 80;
server_name localhost;
set $doc_root /usr/local/var/www; # 申明 doc_root变量
# 默认location
location / {
root /usr/local/var/www/html;
index index.html index.htm;
}
location ^~ /images/ {
root $doc_root;
}
location ~* \\.(gif|jpg|jpeg|png|bmp|ico|swf|css|js)$ {
root $doc_root/img;
}
}
}
访问http://localhost/test.jpg 会映射到 $doc_root/img
三、反向代理
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://localhost:8081;
proxy_set_header Host $host:$server_port;
# 设置用户ip地址
proxy_set_header X-Forwarded-For $remote_addr;
# 当请求服务器出错去寻找其他服务器
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
}
}
当我们访问 localhost 的时候,就相当于访问 localhost:8081了
四、负载均衡
upstream web_servers {
server localhost:8081 weight=1;
server localhost:8082 weight=3;
server localhost:8082 weight=4 backup;
}
server {
listen 80;
server_name localhost;
#access_log logs/host.access.log main;
location / {
proxy_pass http://web_servers;
# 必须指定Header Host
proxy_set_header Host $host:$server_port;
}
}
访问地址 http://localhost/, 轮询访问 8081 和8082 端口
权重配置 weight=1 ,2
热备 backup
示例是4次请求只有一次被分配到8081上,其他3次分配到8082上。backup是指热备,只有当8081和8082都宕机的情况下才走8083
五、常用配置
以上是关于Nginx 基础介绍和常用场景的主要内容,如果未能解决你的问题,请参考以下文章