nuxt项目如何设置防盗链

如题,前台项目,ip 为 192.168.111.116, nginx 对于 nuxt的配置如下:

location / {
    proxy_pass http://localhost:3000;
}

需要设置图片防盗链,防止非前台项目引用nuxt中的图片,
包括打包后的 _nuxt目录中的图片,
以及nuxt目录中的static文件中的文件
请问如何设置?

隐藏真实网址取消图片保存功能

  • 这篇博客: nuxt.js部署到nginx的非根目录中的 二、安装nuxt.js 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 这里我就偷懒了,直接上链接还有截图https://zh.nuxtjs.org/guide/installation
    在这里插入图片描述
    package.json的配置片段
    在这里插入图片描述
    然后将你的代码(.nuxt文件夹,static文件夹,nuxt.config.js和package.json这四个即可,注意.nuxt放到linux上面会是隐藏的)放上去服务器域名的非根目录(这里我只说非根目录的,比如我的域名www.test.com指向的目录为/home/webapps/aa/bb , 而我要把代码放到/home/webapps/aa/bb/gsyshop下面)

    代码放上去之后npm install 安装依赖
    依赖安装结束后就可以愉快的开发了 , 本地开发结束,npm run build打包然后将.nuxt替换到服务器对应目录即可,在服务器端npm run start
    之后就可以通过http://你的域名/nuxtshop/来访问了
    然后开启进程守护 pm2 start npm --name “my-nuxt” – run start
    其中 “my-nuxt”的名称是 我们在package中的项目名称。
    (有什么问题欢迎留言指正)

  • 以下回答由chatgpt基于相关博客总结生成:

    对于防盗链的需求,我们需要在Nginx的配置文件中添加相关的配置项。具体步骤如下:

    1. 在Nginx配置文件中找到需要防盗链的路径配置,一般情况下是在server块中的location配置中。

    2. 在location的配置项中添加以下代码:

    valid_referers none blocked 192.168.111.116;
    if ($invalid_referer) {
        return   403;
    }
    

    这段代码的作用是设置有效的referers,即允许哪些来源可以访问该资源。在本例中,我们只允许IP地址为192.168.111.116的来源进行访问。如果referer不合法,即属于none或blocked或不在有效的referers列表中,则会返回403错误。

    1. 对于静态资源来说,我们需要在对应的location中添加以下代码:
    location ~* \.(gif|jpg|jpeg|png|svg|js|css)$ {
        valid_referers none blocked 192.168.111.116;
        if ($invalid_referer) {
            return   403;
        }
    }
    

    这段代码的作用与步骤2中的代码类似,但是对于静态资源来说,需要在location中添加正则表达式,指定需要防盗链的资源类型。

    1. 最后,重启Nginx服务器使配置生效。

    完整的Nginx配置示例代码如下(以localhost为例):

    server {
        listen       80;
        server_name  localhost;
    
        location / {
            proxy_pass http://192.168.111.116:3000;
        }
    
        location /_nuxt/ {
            valid_referers none blocked 192.168.111.116;
            if ($invalid_referer) {
                return   403;
            }
        }
    
        location /static/ {
            valid_referers none blocked 192.168.111.116;
            if ($invalid_referer) {
                return   403;
            }
        }
    
        location ~* \.(gif|jpg|jpeg|png|svg|js|css)$ {
            valid_referers none blocked 192.168.111.116;
            if ($invalid_referer) {
                return   403;
            }
        }
    }
    

    在本例中,我们对于根路径、_nuxt目录和static目录中的所有资源都进行了防盗链处理。其中,valid_referers中的none和blocked分别表示禁止referers为空和为blocked的来源进行访问,而192.168.111.116则为允许的IP地址。$invalid_referer是Nginx内置变量,用于检查referer是否合法。如果不合法,则返回403错误。

    需要注意的是,虽然防盗链能够一定程度上防止图片被非法引用,但是referer可以被伪造,因此防盗链并不能完全保证资源的安全性。

    同时,以上操作也需要根据实际情况进行调整,比如需要考虑是否存在CDN、是否需要允许其他IP地址进行访问等因素。