mac下mamp环境中nginx配置图片防盗链

目前有三个环境和项目

主项目 环境 nginx tp5.test.com:7888

项目一 mamp  apache 项目地址 xxxx.com:8888/shop/goods/test

项目二 本地mac自带的apache  项目地址 127.0.0.1/you.php  项目目录/Library/WebServer/Documents/

配置好环境

在自己本地的tp5项目下

访问http://tp5.test.com:7888/static/images/index.jpg

另一个项目下引用这个图片

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<img src="http://tp5.test.com:7888/static/images/index.jpg">
</body>
</html>

测试 可以访问

在apache下

http://127.0.0.1/you.php

都能访问

只允许tp5.test.com:7888能访问

那么修改nginx配置,将xxx.com:7888虚拟站点加入白名单

那么修改配置为

发现访问 依然可以访问到图片,并未配置成功

后来经过排查得知自己用的tp5.test.com:7888是配置的虚拟站点 所以要在虚拟站点的位置来配置

location ~* \.(jpg|png|gif)$ {
        root /home/resources;
        valid_referers server_names;
        if ($invalid_referer){
            rewrite ^/ http://127.0.0.1/error.png;
        }
    }

允许xxx.com:8888可以访问图片

修改配置为

location ~* \.(jpg|png|gif)$ {
        root /home/resources;
        valid_referers server_names xxx.com:8888;
        if ($invalid_referer){
            rewrite ^/ http://127.0.0.1/error.png;
        }
    }

nginx 在mamp 下的配置如下

MAMP_ngx_http_image_filter_module_MAMPload_module "modules/ngx_http_image_filter_module.so";
MAMP_ngx_http_perl_module_MAMPload_module "modules/ngx_http_perl_module.so";
MAMP_ngx_http_xslt_filter_module_MAMPload_module "modules/ngx_http_xslt_filter_module.so";
MAMP_ngx_mail_module_MAMPload_module "modules/ngx_mail_module.so";
MAMP_ngx_stream_module_MAMPload_module "modules/ngx_stream_module.so";

MAMP_User_Directive_MAMPuser                        MAMP_User_MAMP MAMP_Group_MAMP;
worker_processes            auto;

events {
    worker_connections      1024;
}

http {
    include                 /Applications/MAMP/conf/nginx/mime.types;
    default_type            text/html;
    gzip                    on;
    gzip_types              text/css text/x-component application/x-javascript application/javascript text/javascript text/x-js text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;
    
    sendfile                on;
    keepalive_timeout       65;

    # access_log            "/Applications/MAMP/logs/nginx_access.log";
    error_log               "MAMP_NginxErrorLog_MAMP";

MAMP_Bonjour_SubsFilter_IF_MAMP
    subs_filter_types       text/html text/xml application/javascript;
MAMP_Bonjour_SubsFilter_END_MAMP

    server {
        listen               MAMP_Port_MAMP default_server;

        root                 "MAMP_Localhost_DocumentRoot_MAMP";

        location / {
             if (!-e $request_filename) {
                rewrite  ^(.*)$  /index.php?s=/$1  last;
                     break;
                  }
            index            MAMP_Localhost_DirectoryIndex_MAMP;
        }
    
        location ~* /MAMP[^-]*(.*)$ {
            root             "/Library/Application Support/appsolute/MAMP PRO";
            index            index.php;

            location ~ \.php$ {
                try_files        $uri =404;
                fastcgi_pass     unix:/Applications/MAMP/Library/logs/fastcgi/nginxFastCGI_phpMAMP_PhpLocalhost_MAMP.sock;
                fastcgi_param    SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include          /Applications/MAMP/conf/nginx/fastcgi_params;
            }
        }

        location ~* /phpMyAdmin(.*)$ {
            root             "/Library/Application Support/appsolute/MAMP PRO";
            index            index.php;

            location ~ \.php$ {
                try_files        $uri =404;
                fastcgi_pass     unix:/Applications/MAMP/Library/logs/fastcgi/nginxFastCGI_phpMAMP_PhpLocalhost_MAMP.sock;
                fastcgi_param    SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include          /Applications/MAMP/conf/nginx/fastcgi_params;
            }
        }

        location ~* /phpPgAdmin(.*)$ {
            root             /Applications/MAMP/bin;
            index            index.php;

            location ~ \.php$ {
                try_files        $uri =404;
                fastcgi_pass     unix:/Applications/MAMP/Library/logs/fastcgi/nginxFastCGI_phpMAMP_PhpLocalhost_MAMP.sock;
                fastcgi_param    SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include          /Applications/MAMP/conf/nginx/fastcgi_params;
            }
        }
        
        location ~* /phpLiteAdmin(.*)$ {
            root             /Applications/MAMP/bin;
            index            index.php;

            location ~ \.php$ {
                try_files        $uri =404;
                fastcgi_pass     unix:/Applications/MAMP/Library/logs/fastcgi/nginxFastCGI_phpMAMP_PhpLocalhost_MAMP.sock;
                fastcgi_param    SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include          /Applications/MAMP/conf/nginx/fastcgi_params;
            }
        }
        
        location ~* /SQLiteManager(.*)$ {
            root             /Applications/MAMP/bin;
            index            index.php;

            location ~ \.php$ {
                try_files        $uri =404;
                fastcgi_pass     unix:/Applications/MAMP/Library/logs/fastcgi/nginxFastCGI_phpMAMP_PhpLocalhost_MAMP.sock;
                fastcgi_param    SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include          /Applications/MAMP/conf/nginx/fastcgi_params;
            }
        }
        
        location ~* /adminer(.*)$ {
            root             /Applications/MAMP/bin;
            index            adminer.php;

            location ~ \.php$ {
                try_files        $uri =404;
                fastcgi_pass     unix:/Applications/MAMP/Library/logs/fastcgi/nginxFastCGI_phpMAMP_PhpLocalhost_MAMP.sock;
                fastcgi_param    SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include          /Applications/MAMP/conf/nginx/fastcgi_params;
            }
        }
        
        location /icons {
            alias /Applications/MAMP/Library/icons;
            autoindex on;
        }
        
        location /favicon.ico {
            alias /Applications/MAMP/bin/favicon.ico;
            # log_not_found off;
            # access_log off;
        }

        location ~ \.php$ {
            try_files        $uri =404;
            fastcgi_pass     unix:/Applications/MAMP/Library/logs/fastcgi/nginxFastCGI_phpMAMP_PhpLocalhost_MAMP.sock;
            fastcgi_param    SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include          /Applications/MAMP/conf/nginx/fastcgi_params;
        }

        location ~ /\. {
            deny all;
        }

        #location ~* \.(gif|jpg|png|pdf)$ {
        #  expires          30d;
         # }


        # location = /robots.txt {
        #     allow all;
        #     log_not_found off;
        #     access_log off;
        # }

        # location ~* \.(txt|log)$ {
        #     allow 127.0.0.1;
        #     deny all;
        # }

        # location ~ \..*/.*\.php$ {
        #     return 403;
        # }

        location /nginx_status {
            stub_status      on;
            access_log       off;
            allow            127.0.0.1;
            deny             all;
        }
    }

    MAMP_VirtualHost_iteration_begin_MAMP
    server {
        listen              MAMP_IP_Port_MAMP;
        server_name         MAMP_VirtualHost_ServerName_MAMP;
        MAMP_VirtualHost_ServerAliases_MAMP

        root                "MAMP_VirtualHost_DocumentRoot_MAMP";

        location / {
            try_files       MAMP_Try_Files_MAMP;
if (!-e $request_filename) {
              rewrite ^(.*)$ /app.php?s=/$1 last;
              break;
         }
            index           MAMP_VirtualHost_DirectoryIndex_MAMP;
            autoindex       MAMP_VirtualHost_AutoIndex_MAMP;
            MAMP_VirtualHost_Allow_MAMP
            MAMP_VirtualHost_Deny_MAMP
            MAMP_LocationCustom_MAMP
        }
	
location ~* \.(jpg|png|gif)$ {
        root /home/resources;
        valid_referers server_names xxxp.com:8888;
        if ($invalid_referer){
            rewrite ^/ http://127.0.0.1/error.png;
        }
    }

MAMP_Nginx_ReverseProxy_IF_MAMP
        # proxy the PHP scripts to Apache
        location ~ \.php$ {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_pass http://MAMP_Apache_IP_MAMP:MAMP_Apache_Port_MAMP;
        }
MAMP_Nginx_ReverseProxy_ELSE_MAMP
        location ~ \.php$ {
            try_files        $uri =404;
            fastcgi_pass     unix:/Applications/MAMP/Library/logs/fastcgi/nginxFastCGI_phpMAMP_PhpHost_MAMP.sock;
            fastcgi_param    SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include          /Applications/MAMP/conf/nginx/fastcgi_params;
        }
MAMP_Nginx_ReverseProxy_END_MAMP

MAMP_Bonjour_Substitution_IF_MAMP
        proxy_set_header Accept-Encoding "";
        subs_filter MAMP_Bonjour_Hostname_MAMP MAMP_Bonjour_DNS_Name_MAMP gi;
MAMP_Bonjour_Substitution_END_MAMP

        MAMP_VirtualHost_AdditionalCustom_MAMP
    }
    MAMP_VirtualHost_iteration_end_MAMP

    MAMP_SSLVirtualHost_iteration_begin_MAMP
    server {
        listen              MAMP_SSL_IP_Port_MAMP;
        server_name         MAMP_SSLVirtualHost_ServerName_MAMP;

        root                "MAMP_SSLVirtualHost_DocumentRoot_MAMP";
        # access_log          /Applications/MAMP/logs/nginx_ssl_access.log;
        error_log           /Applications/MAMP/logs/nginx_ssl_error.log;

        ssl on;
        ssl_certificate     "MAMP_SSLVirtualHost_Certificate_MAMP";
        ssl_certificate_key "MAMP_SSLVirtualHost_CertificateKey_MAMP";
        ssl_session_cache   shared:SSL:10m;
        ssl_session_timeout 10m;
        ssl_session_tickets off;

        MAMP_SSLVirtualHost_OnlyAllowTLS_MAMPssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
        MAMP_SSLVirtualHost_OnlyAllowTLS_MAMPssl_ciphers         'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
        MAMP_SSLVirtualHost_OnlyAllowTLS_MAMPssl_prefer_server_ciphers  on;

        location / {
            try_files       MAMP_Try_Files_MAMP;
            index           MAMP_SSLVirtualHost_DirectoryIndex_MAMP;
            autoindex       MAMP_VirtualHost_AutoIndex_MAMP;
            MAMP_VirtualHost_Allow_MAMP
            MAMP_VirtualHost_Deny_MAMP
        }

MAMP_Nginx_ReverseProxy_IF_MAMP
        # proxy PHP scripts to Apache
        location ~ \.php$ {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_pass http://MAMP_Apache_IP_MAMP:MAMP_Apache_Port_MAMP;
        }
MAMP_Nginx_ReverseProxy_ELSE_MAMP
        location ~ \.php$ {
            try_files        $uri =404;
            fastcgi_pass     unix:/Applications/MAMP/Library/logs/fastcgi/nginxFastCGI_phpMAMP_PhpHost_MAMP.sock;
            fastcgi_param    SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include          /Applications/MAMP/conf/nginx/fastcgi_params;
        }
MAMP_Nginx_ReverseProxy_END_MAMP

MAMP_Bonjour_Substitution_IF_MAMP
        proxy_set_header Accept-Encoding "";
        subs_filter MAMP_Bonjour_Hostname_MAMP MAMP_Bonjour_DNS_Name_MAMP gi;
MAMP_Bonjour_Substitution_END_MAMP

        MAMP_VirtualHost_AdditionalCustom_MAMP
    }
    MAMP_SSLVirtualHost_iteration_end_MAMP
}

# DONT REMOVE: MAMP PRO nginx.conf template compatibility version: 9

猜你喜欢

转载自blog.csdn.net/resilient/article/details/86596708