反向代理

最基础的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

nginx proxy_redirect传参后多了个80 nginx proxy_redirect用法_nginx

从上图可以清楚的明白,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;
     }
}