nginx配置讲解
nginx下载
nginx: downloadhttps://nginx.org/en/download.html
正向,反向代理
正向代理(Forward Proxy)
代表客户端发起请求,被访问服务服务器不知道访问者是谁(只知道nginx)。 定义: 正向代理是一个位于客户端和目标服务器之间的服务器,它代表客户端向目标服务器发起请求。客户端配置使用正向代理,所有请求都通过代理服务器转发。
工作原理:
1. 客户端配置使用正向代理(例如,在浏览器或操作系统中设置代理服务器地址和端口)。
2. 当客户端请求一个资源时,请求首先发送到正向代理服务器。
3. 正向代理服务器代表客户端向目标服务器发送请求。
4. 目标服务器将响应返回给正向代理服务器。
5. 正向代理服务器将响应返回给客户端。
主要特点:
● 客户端知道代理的存在:客户端必须明确配置代理服务器。
● 隐藏客户端身份:目标服务器看到的是代理服务器的IP地址,而不是客户端的真实IP地址。
● 用途:○ 访问控制:组织可以使用正向代理来控制员工对互联网的访问。○ 缓存:代理服务器可以缓存常用资源,提高访问速度。○ 绕过地理限制:用户可以通过位于不同地区的代理服务器访问被限制的内容。可以看到:结果是由Nginx响应给我们的,并不是直接由百度响应的。实际上是由百度响应结果给Nginx,再由Nginx响应给客户端。
响应头是nginx反向代理(Reverse Proxy)
备注:正向代理,代表客户端,所以可以访问百度
反向代理:下面的代码,直接打到百度的后台服务器,可能缺些请求头什么的,所以会被百度拦截到代表服务端,客户访问A服务器,由A服务器转发,客户只知道访问百度,不知道百度会代理到哪个具体服务器定义: 反向代理是一个位于目标服务器之前的服务器,它接收来自客户端的请求,并将这些请求转发到后端服务器。客户端不知道反向代理的存在,它认为自己直接与目标服务器通信。
工作原理:
1. 客户端发送请求到目标服务器的域名或IP地址。
2. 请求首先到达反向代理服务器(通常通过DNS解析或负载均衡器)。
3. 反向代理服务器根据配置将请求转发到一个或多个后端服务器。
4. 后端服务器处理请求并返回响应给反向代理服务器。
5. 反向代理服务器将响应返回给客户端。
主要特点:
● 客户端不知道代理的存在:客户端认为它直接与目标服务器通信。
● 隐藏服务器身份:客户端看不到后端服务器的真实IP地址和架构。
● 用途:○ 负载均衡:将客户端请求分发到多个后端服务器,提高性能和可靠性。○ 安全性:保护后端服务器免受直接攻击。○ SSL终止:在反向代理上处理SSL加密和解密,减轻后端服务器的负担。○ 缓存:缓存静态内容,减少后端服务器的负载。
配置文件讲解
文件地址:D:\xx\xx\nginx-1.16.1\conf\nginx.conf
## 启动 1 个 Nginx 工作进程
worker_processes 1;events {
## 并发连接最大1024个
worker_connections 1024;
}http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
## 访问localhost:80会被代理到index.html
server {
##1:访问localhost:80触发
listen 80;
server_name localhost;
##2:接着去找要访问的对象
## location /:匹配所有以 / 开头的请求(即所有请求)。
## root html; : 指定文件路径,根路径下的gtml文件夹
## index index.html index.htm; :查找index.html index.htm文件并展示。同时存在返回第一个
location / {
root html;
index index.html index.htm;
}
## 服务器错误时返回的页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80;
server_name 127.0.0.1;location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
##------------------------------------------------正向代理-----------------------------------------------------------##
## 正向代理。客户端知道目的服务器的地址,但是通过代理的方式访问(好处,隐藏自身)
## 简单来说:当我访问localhost:8600,此时,会nginx被代理到百度。客户可以从抓包看到访问路径,及代理人(ngix)
## 我->nginx(ngix定义了我访问8600,要被代理到哪里)->百度
server{
listen 8600;
server_name localhost;
##转发路径
location / {
proxy_pass http://www.baidu.com;
}
}
##------------------------------------------------反向代理-----------------------------------------------------------#### 反向代理. 代理的是服务端,对于客户端是透明的,客户端并不知道代理的存在。
## 简单来说:当我访问百度,其实我并不知道访问的是那一台具体的百度服务器,也无法感知到代理
## 当客户端访问 localhost:8601 时,请求被 Nginx 代理到百度的多个 IP 地址之一,客户端不知道后端服务器的真实 IP”。
server {
listen 8601;
server_name localhost;## 代理转发
location / {
proxy_pass http://baidu_server;}
}
## 百度部分主机
## upstream块在Nginx配置中用于定义一组服务器
upstream baidu_server {
##负载均衡策略:默认轮询,也可以指定,如轮询、权重、IP 哈希等
## 湖北襄阳服务器
server 180.101.49.42 weight=3;
## 江苏宿迁服务器
server 180.101.49.11 weight=2;
## 河北秦皇岛服务器
server 110.242.68.3 weight=1;
}
##==================常用命令=========================#
## 安装目录,cmd,使用
## nginx:启动nginx。
## nginx -s reload:重启nginx。
## nginx -s stop:停止nginx。
## nginx -s quit:安全退出nginx。
}