反向代理
最基础的version
现在我们要访问https://www.baidu.com然后反向代理到https://news.baidu.com这个网站。我们直接到etc/nginx/con.d/8001.conf进行修改。
配置如下
server{
listen 80;
server_name www.baidu.com;
location / {
proxy_pass https://news.baidu.com;
}
}
反向代理还有些常用的指令,我在这里给大家列出:
- proxy_set_header :在将客户端请求发送给后端服务器之前,更改来自客户端的请求头信息。
- proxy_connect_timeout:配置Nginx与后端代理服务器尝试建立连接的超时时间。
- proxy_read_timeout : 配置Nginx向后端服务器组发出read请求后,等待相应的超时时间。
- proxy_send_timeout:配置Nginx向后端服务器组发出write请求后,等待相应的超时时间。
- proxy_redirect :用于修改后端服务器返回的响应头中的Location和Refresh。
配置gzip
从上图可以清楚的明白,gzip是需要服务器和浏览器同事支持的。当浏览器支持gzip压缩时,会在请求消息中包含Accept-Encoding:gzip,这样Nginx就会向浏览器发送听过gzip后的内容,同时在相应信息头中加入Content-Encoding:gzip,声明这是gzip后的内容,告知浏览器要先解压后才能解析输出。
gzip的配置项
- gzip : 该指令用于开启或 关闭gzip模块。
- gzip_buffers : 设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。
- gzip_comp_level : gzip压缩比,压缩级别是1-9,1的压缩级别最低,9的压缩级别最高。压缩级别越高压缩率越大,压缩时间越长。
- gzip_disable : 可以通过该指令对一些特定的User-Agent不使用压缩功能。
- gzip_min_length:设置允许压缩的页面最小字节数,页面字节数从相应消息头的Content-length中进行获取。
- gzip_http_version:识别HTTP协议版本,其值可以是1.1.或1.0.
- gzip_proxied : 用于设置启用或禁用从代理服务器上收到相应内容gzip压缩。
- gzip_vary : 用于在响应消息头中添加Vary:Accept-Encoding,使代理服务器根据请求头中的Accept-Encoding识别是否启用gzip压缩。
正向代理
正向代理测试域名:http://www.ttlsa.com/,A访问C,访问不了,通过B来访问C
静态资源服务器
配置
1.首先进入nginx主配置文件,vim /etc/nginx/nginx.conf
# 在http{}里面添加一个路径
http{
# ... 省略代码
# 告诉nginx主文件去下面路径寻找配置
include /home/conf/*.conf
# ... 省略代码
}
配置椎间的 xxx.conf 文件
示例:
- 在家目录创建一个images目录 即/home/images
mkdir /home/images - 再创建一个conf目录
mkdir /home/conf - 创建并打开一个nginx的配置文件
vim /home/conf/img_server_nginx.conf - 编辑配置
server {
listen 8000;
# sever_name 可以同时配置多个
server_name ip地址 域名;
location /images/ {
# root是将images映射到/home/images/目录下,也就是去该目录下查找资源
root /home/;
# autoindex on 打开浏览功能
autoindex on;
}
}
- 修改用户访问权限
chmod 777 -R /home/images/
- 重启nginx服务
systemctl restart nginx或nginx -s reload
- 测试(通过scp远程上传图片测试)
scp ./mooskd.jpg 用户名@ip地址:/home/images
适配PC和移动设备
http_user_agent的使用
Nginx通过内置变量$http_user_agent,可以获取到请求客户端的userAgent,就可以用户目前处于移动端还是PC端,进而展示不同的页面给用户。
操作步骤如下:
- 在/usr/share/nginx/目录下新建两个文件夹,分别为:pc和mobile目录
cd /usr/share/nginx
mkdir pc
mkdir mobile
- 在pc和miblic目录下,新建两个index.html文件,文件里下面内容
<h1>I am pc!</h1>
<h1>I am mobile!</h1>
- 进入etc/nginx/conf.d目录下,修改8001.conf文件,改为下面的形式:
server{
listen 80;
server_name nginx2.jspang.com;
location / {
root /usr/share/nginx/pc;
if ($http_user_agent ~* '(Android|webOS|iPhone|iPod|BlackBerry)') {
root /usr/share/nginx/mobile;
}
index index.html;
}
}