5. Nginx日常管理
最后更新于:2022-04-02 07:46:56
### Nginx追加模块
备注:网上有同学说只make不make install,会覆盖,但是Nginx在make install时,会判断文件是否存在,如果存在则不会进行创建和覆盖。
#### 查看Nginx 编译参数
/app/nginx/sbin/nginx -V
#### 追加第三方模块
安装Nginx echo模块
```shell
cd /opt/
git clone https://github.com/openresty/echo-nginx-module.git@1.8.x
cd /opt/nginx-1.8.1
./configure --prefix=/app/nginx-1.8.1 --user=nginx --group=nginx --add-module=/opt/1.8.x/
make && make install
```
#### 追加自身模块
安装RealIP模块,在有CDN或多层反向代理的情况下,获取用户真实IP
```shell
cd /opt/nginx-1.8.1
./configure --prefix=/app/nginx-1.8.1 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module
make && make install
```
### Nginx(Web)获取客户端真实IP
- 安装RealIP模块,在有CDN或多层反向代理的情况下,获取用户真实IP
#### 基础架构
L1-Nginx(proxy)-->L2-Nginx(proxy)-->Nginx(Web)
#### 增加realip模块
```shell
cd /opt/nginx-1.8.1
./configure --prefix=/app/nginx-1.8.1 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module
make && make install
```
#### Server模块中配置
```shell
set_real_ip_from 10.0.0.0/24;
set_real_ip_from 192.168.0.0/24;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
```
- set_real_ip_from:告诉nginx,192.168.0.109是我们的反向代服务器不是真实的用户IP
- real_ip_header:告诉nginx真正的用户IP是存在X-Forwarded-For请求头中
- 当real_ip_recursive为off时,nginx会把real_ip_header指定的HTTP头中的最后一个IP当成真实IP
- 当real_ip_recursive为on时,nginx会把real_ip_header指定的HTTP头中的最后一个不是信任服务器的IP当成真实IP
#### 三种在CDN环境下获取用户IP方法总结
- CDN自定义header头
优点:获取到最真实的用户IP地址,用户绝对不可能伪装IP
Ucloud为例https://docs.ucloud.cn/storage_cdn/ucdn/faq.html
缺点:需要CDN厂商提供
- 程序获取forwarded-for头
优点:可以获取到用户的IP地址
缺点:程序需要改动,以及用户IP有可能是伪装的
- 使用realip获取
优点:程序不需要改动,直接使用remote_addr即可获取IP地址
缺点:ip地址有可能被伪装,而且需要知道所有CDN节点的ip地址或者ip段
';