Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
3.5k views
in Technique[技术] by (71.8m points)

nginx的配置问题?

server {
    listen: 80;
    server_name _;
    
    root /project/public;
    
    location ^~ /public/ {
        # 想实现的问题
    }
}

因为public目录下是所有的静态资源,同级目录下还有后台接口代码,我现在想在上述注释的地方做个配置实现下面这个问题:

1.浏览器请求 /public 开头的路径只是静态资源的标识,返回的应该是 /project/public/ 下的资源,root 不想改,因为 /project/admin 是后台代码,如果 root 改为 /project/,那浏览器就能访问到后台的代码了,不安全

2.不想在 /project/public/ 下再创建一个 public 的目录,这样确实可以解决,但没有挑战性

3.有没有什么办法实现,请大佬们赐教。

举个栗子:如浏览器访问 xxx.com/public/index.css ,返回的应该是 /project/public/indexc.css

不知道有没有解释清楚,请大佬不吝赐教!


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

那就 root 设置为 project 呗,然后把你不想让人访问的目录不让访问不就可以了.

server {
    listen 80;
    server_name _;
    root /project;
    location ~ /public {
        
    }
    location ~ /admin {
        deny all; #或者返回一个错误码,403无权限和404未找到都可以,你选择一样就好.
        return 404;
    }

}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...