Press "Enter" to skip to content

Nginx配置PHP应用代理

今儿把七月芒果(本站)PHP应用(wordpress)以及数据库迁移到腾讯云了。当然域名绑定依然在阿里云上。起因是买了腾讯云应用服务器和云数据库,不得不说良心云价格很漂亮。由于备案还在阿里云,又懒得迁移(一个破博客)索性将阿里云server做前置代理,应用及数据库放到腾讯云。

实现方案如下:

代理服务器配置

将所有流量转发到应用服务器

location / {
    proxy_pass http://192.168.0.1:8080;
    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
}

应用服务器配置

这里需要注意配置里定义了$server_name_real变量,由于代理PHP获取环境变量会拿当前服务器的server_name,故定义好防止出错。

另外fastcgi_param引用的文件也不是默认的,这里主要接受刚刚设置的参数。

server {
    listen 8080;
    server_name  _;
    charset utf-8;
    set $server_name_real www.mango.im;
    root /var/www/html/mangoblog;
    location / {
        index   index.html index.php;
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params_mango;
    }
}

fastcgi_params_mango文件具体配置

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
#fastcgi_param  REQUEST_SCHEME     $scheme;
fastcgi_param  REQUEST_SCHEME     https;
#fastcgi_param  HTTPS              $https if_not_empty;
fastcgi_param  HTTPS              on;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
#fastcgi_param  SERVER_PORT        $server_port;
#fastcgi_param  SERVER_NAME        $server_name;

fastcgi_param  SERVER_PORT        443;
fastcgi_param  SERVER_NAME        $server_name_real;


# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

大概就是这样,这样配置好也就能跑起来了。

但是这里还有几个问题🤔

  1. 代理走的外网IP以及使用的HTTP协议,无法使用HTTPS,安全性是个问题。
  2. 由于走外网这样两台server带宽都会占用,有大文件将会是瓶颈。当然也可以优化,比如前端文件放代理服务器,或者干脆全部放到类似七牛的Pass服务。
  3. 暂时没想到。

初步测试下来速度还可以,就酱。

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注