NGINX在反向代理所有请求时设置某一路径不进行代理

目的

我自己搭建了一个GITLAB服务,其端口为8099,而访问时带上一个端口号总是十分不美观,所以我通过NGINX进行了反向代理,让GITLAB可以通过80或443端口来进行访问。反向代理的配置文件如下。

location ^~ /
{
    proxy_pass http://127.0.0.1:8099;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_http_version 1.1;
    # proxy_hide_header Upgrade;

    add_header X-Cache $upstream_cache_status;

    #Set Nginx Cache
    
    
    set $static_fileQBdz7WaE 0;
    if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
    {
    	set $static_fileQBdz7WaE 1;
    	expires 1m;
        }
    if ( $static_fileQBdz7WaE = 0 )
    {
    add_header Cache-Control no-cache;
    }
}

这样子所用通过访问某一域名的请求全部会反向代理到127.0.0.1的8099端口上面,但是现在我们有一个需求,就是在某些路径的时候,比如https://example.com/robots/这个路径不要将其反向代理,而是指向某个特定的目录

解决方案

其实很简单,在上述配置文件所在的地方加上如下的语句


location /robots {
    alias /www/wwwroot/example/;    # 这是特定路径的配置
    index index.html;         #设置默认文档
    }

总配置文件应该长的像这个样子


#PROXY-START/

location ^~ /
{
    proxy_pass http://127.0.0.1:8099;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_http_version 1.1;
    # proxy_hide_header Upgrade;

    add_header X-Cache $upstream_cache_status;

    #Set Nginx Cache
    
    
    set $static_fileQBdz7WaE 0;
    if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
    {
    	set $static_fileQBdz7WaE 1;
    	expires 1m;
        }
    if ( $static_fileQBdz7WaE = 0 )
    {
    add_header Cache-Control no-cache;
    }
}


location /robots {
    alias /www/wwwroot/example/;    # 这是特定路径的配置
    index index.html;         #设置默认文档
    }
    
#PROXY-END/

这样子目标就成功实现了。

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议,记得载明出处,(期待)。内容有问题?点此反馈
上一篇
下一篇