• nginx与apache配合反向代理技术2


    注意,上次我们只是简单的在同一台服务器模拟搭建了一个新的http服务器(启用了8080端口),使用的是apache,从而模拟了多台服务器实现的Nginx反向代理,通过Nginx向上游代理服务器发送请求。

    这一次对Nginx反向代理做出具体的配置,按照《Mastering Nginx》推荐

    首先

    sudo su        //root模式

    cd /etc/nginx/

    touch ./proxy.conf        //新建一个单独的代理配置

    vim ./proxy.conf

    如下:

    #Mastering Nginx
    #关闭重定向
    proxy_redirect off;
    #传递给上游服务器用户头信息
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    #不是严格的代理模块指令,如果设置的太低,将不能上传文件到上游服务器
    #注意上传文件大小要大于文件系统文件大小
    client_max_body_size 10m;
    
    client_body_buffer_size 128k;
    #Nginx等待时间
    proxy_connect_timeout 30;
    #Nginx与上游服务器两次操作成功等待时间
    proxy_send_timeout 15;
    proxy_read_timeout 15;
    #这些缓冲控制了Nginx如何快速响应用户请求
    proxy_buffer_size 4k;
    proxy_buffers 4 32k;
    proxy_busy_buffers_size 64k;
    #控制worker进程阻塞后台数据的时间,值越大,处理阻塞时间越长
    proxy_temp_file_write_size 64k;

    然后

    vim ./sites-available/default        //编辑默认站点配置文件

    location ~ ^/apache {
            include proxy.conf;
            proxy_pass http://localhost:8080;
        }

    service nginx reload         //重读nginx

    注意:如果nginx reload提示failed,请查看/var/log/nginx/error.log错误日志!

    接下来尝试把上游服务器作为uploads目录,专门存放用户上传的文件。

    vim /etc/nginx/sites-available/default

     include proxy.conf;
        location /uploads {
            client_max_body_size 500m;
            proxy_connect_timeout 75;
            proxy_send_timeout 90;
            proxy_read_timeout 90;
            proxy_pass http://localhost:8080;
        }
    
        location / {
            index  index.htm index.html index.php;  
            #如果文件不存在则尝试TP解析  
            #如果请求既不是一个文件,也不是一个目录,则执行一下重写规则
            if (!-e $request_filename)
            {
                #地址作为将参数rewrite到index.php上。
                rewrite ^/(.*)$ /index.php/$1;
            }
        }

    注意把proxy.conf包含在location外部,然后内部覆盖原有的配置,否则会提示“directive is duplicate”。

    再次访问:www.gxy.gift/uploads

    apache将会代理存储文件的访问

    接下来讲解反向代理中结合try_files使用技巧:

    在《Mastering Nginx》一书中提到这段代码的作用:

    location / {
            try_files $uri @apache;
        }
    
        location @apache {
            proxy_pass http://localhost:8080;
        }

    这段配置非常简单,简单说:请求发送给Nginx服务器后,按照请求的文件或者路由活取nginx的文件,从而呈现出静态页面,但是如果Nginx找不到这样的地址文件或者无法路由,就会把地址直接丢给上游的@apache

    总结:所谓web反向代理服务,要注意代理服务器使用过程中是直接把域名后面的这一段请求,也就是$uri发送到上游服务器,在这儿是apache,相当于用户直接请求了apache服务器的效果,如果apache服务器也不能处理这段请求,那么将会显示apache的not found提示。

  • 相关阅读:
    未进入Kali Linux系统修改修改密码的方法
    关于kali linux系统的简单工具
    PowerDesigner根据SQL文件生成PDM数据字典
    Oralce Plsql 中文显示乱码问题无需修改注册表完美解决
    自已写的一个简单图片展示功能,只有前后翻页和旋转
    详解百度地图创建地图、定位、标签、距离、驾车路线、跳动动画的标注代码示例
    div靠右浮动案例
    Struts2 XML配置详解
    log4j输出模板
    log4j日志配置详解
  • 原文地址:https://www.cnblogs.com/devilyouwei/p/6336890.html
Copyright © 2020-2023  润新知