本文最后更新于 296 天前,其中的信息可能已经有所发展或是发生改变。
目的
我自己搭建了一个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/
这样子目标就成功实现了。