【问题标题】:Pass everything to one location nginx将所有内容传递到一个位置 nginx
【发布时间】:2016-12-15 13:27:51
【问题描述】:

我想将所有流量传递到一个.php 文件,尝试过但没有用。我正在使用nginx 1.10.0

这是nginx -V 的输出:

nginx 版本:nginx/1.10.0 (Ubuntu) 使用 OpenSSL 1.0.2g-fips 构建 2016 年 3 月 1 日 启用 TLS SNI 支持 配置参数:--with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt=' -Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib /nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with- http_dav_module --with-http_flv_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_m p4_module --with-http_perl_module --with-http_random_index_module --with-http_secure_link_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-mail --with-mail_ssl_module --with-stream --with- stream_ssl_module --with-threads --add-module=/build/nginx-wAi2qr/nginx-1.10.0/debian/modules/headers-more-nginx-module --add-module=/build/nginx-wAi2qr/nginx -1.10.0/debian/modules/nginx-auth-pam --add-module=/build/nginx-wAi2qr/nginx-1.10.0/debian/modules/nginx-cache-purge --add-module=/build /nginx-wAi2qr/nginx-1.10.0/debian/modules/nginx-dav-ext-module --add-module=/build/nginx-wAi2qr/nginx-1.10.0/debian/modules/nginx-development-kit --add-module=/build/nginx-wAi2qr/nginx-1.10.0/debian/modules/nginx-echo --add-module=/build/nginx-wAi2qr/nginx-1.10.0/debian/modules/ngx -fancyindex --add-module=/build/nginx-wAi2qr/nginx-1.10.0/debian/modules/nginx-http-push --add-module=/build/nginx-wAi2qr/nginx-1.10.0/debian /modules/nginx-lua --add-module=/build/nginx-wAi2qr/nginx-1.1 0.0/debian/modules/nginx-upload-progress --add-module=/build/nginx-wAi2qr/nginx-1.10.0/debian/modules/nginx-upstream-fair --add-module=/build/nginx- wAi2qr/nginx-1.10.0/debian/modules/ngx_http_substitutions_filter_module

server {
    listen 80 default_server;

    server_name _;

    location / {

        include /etc/nginx/snippets/fastcgi-php.conf;

        fastcgi_param SCRIPT_FILENAME /location/to/php/cache.php;       
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;

    }


    # Set maximum expire to all static files

    location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
        access_log off;
        log_not_found off;
        expires max;
    }

} # server

【问题讨论】:

  • 您希望实现什么?您想为每个请求(即使是静态文件)将执行流程传递到 cache.php 中吗?你的cache.php中有什么? nginx日志中有什么?你现在有什么样的错误?

标签: php linux nginx url-rewriting


【解决方案1】:

尝试以下配置:

server {
    listen 80 default_server;

    server_name _;

    root /location/to/php;
    index cache.php;

    location / {
        rewrite ^/(.*)$ /cache.php?requestedPath=$1 break;
        include /etc/nginx/snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }


    # Set maximum expire to all static files

    location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|t    gz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
        access_log off;
        log_not_found off;
        expires max;
    }

} # server

然后您可以在您的cache.php 中使用来自GET 参数的requestedPath

但此配置不会将静态文件的执行流程重定向到 PHP。如果您想处理 cache.php 中的图像和其他静态文件,您应该添加 add 到第二个 location 块与第一个相同的行。

【讨论】:

    猜你喜欢
    • 2022-12-05
    • 2020-01-21
    • 2019-04-30
    • 1970-01-01
    • 2018-07-28
    • 2012-01-12
    • 2012-11-27
    • 2014-10-16
    • 1970-01-01
    相关资源
    最近更新 更多