# Nginx

正向代理与反向代理的解释：

{% embed url="<https://zhuanlan.zhihu.com/p/464965616>" %}

**总结：**

* 代理就是通过代理服务器进行访问
* 正向代理是浏览器主动通过代理服务器访问
* 反向代理是被动的，在“不知情”的情况下被转发到了其他端口去访问，常用于服务器的负载均衡。

#### 透明代理

透明意味着代理本身对用户是不可见( invisible )的，也就是说用户侧不需要进行代理设置(区别于前向代理)，请求的目标也是真实的服务器(区别于反向代理)。作为中间人，透明代理会拦截用户的请求，其常见的应用场景有：

* 缓存请求的结果。透明代理缓存服务器的回应，这样之后重复请求到达时，直接回复给用户就好了，不用再将请求扔给服务器，这一点有没有让你想到 CDN ?
* 过滤请求。也就是一些公司常常使用的行为管理功能，禁止掉员工对 QQ、weixin、炒股等网站的请求

{% embed url="<https://switch-router.gitee.io/blog/transparent-proxy/>" %}

#### 跨域

1. **没有反向代理的情况**：
   * 假设你有一个前端应用托管在 `https://myapp.com`，它需要访问后端API `https://api.myserver.com`。
   * 直接从 `https://myapp.com` 发出对 `https://api.myserver.com` 的请求会构成跨域请求，因为协议和域名不同（或域名和/或端口不同）。
2. **使用反向代理的情况**：

   * 在 `https://myapp.com` 域下配置反向代理服务器，将所有对 `/api` 的请求转发到 `https://api.myserver.com`。
   * 当前端应用想要调用API时，它会发送请求到 `https://myapp.com/api`。尽管这些请求实际上是由反向代理转发给 `https://api.myserver.com` 的，但从前端应用的视角来看，所有请求都是发送到它自己的源 `https://myapp.com`。
   * 因此，浏览器认为这些请求都是同源的，不会触发跨域资源共享（CORS）的限制。

**Q：为什么服务端不会拒绝来自代理服务器的请求呢?**

* 浏览器信任了代理服务器
