Cookie rejected: Illegal path attribute "/nexus". Path of origin: "/content/" 解决方案

问题描述

通过执行“mvn clean deploy” 命令 将 Maven 项目发布到 Nexus 私服时,控制台输出了如下警告信息:

[INFO] Downloaded: dav:http://maven.mysite.com/content/repositories/snapshots/${groupId}/${artifactId}/${version}/maven-metadata.xml (2 KB at 10.5 KB/sec)
[INFO] Uploading: http://maven.mysite.com/content/repositories/snapshots/${groupId}/${artifactId}/${version}/${artifactId}-xxx.jar
2015-3-19 10:20:47 org.apache.commons.httpclient.HttpMethodBase processResponseHeaders
警告: Cookie rejected: "$Version=0; rememberMe=deleteMe; $Path=/nexus". Illegal path attribute "/nexus". Path of origin: "/content/"
2015-3-19 10:20:47 org.apache.commons.httpclient.HttpMethodBase processResponseHeaders
警告: Cookie rejected: "$Version=0; rememberMe=deleteMe; $Path=/nexus". Illegal path attribute "/nexus". Path of origin: "/content/repositories/"
2015-3-19 10:20:47 org.apache.commons.httpclient.HttpMethodBase processResponseHeaders
警告: Cookie rejected: "$Version=0; rememberMe=deleteMe; $Path=/nexus". Illegal path attribute "/nexus". Path of origin: "/content/repositories/snapshots/"
2015-3-19 10:20:47 org.apache.commons.httpclient.HttpMethodBase processResponseHeaders
警告: Cookie rejected: "$Version=0; rememberMe=deleteMe; $Path=/nexus". Illegal path attribute "/nexus". Path of origin: "/content/repositories/snapshots/${groupId}/"
2015-3-19 10:20:47 org.apache.commons.httpclient.HttpMethodBase processResponseHeaders
警告: Cookie rejected: "$Version=0; rememberMe=deleteMe; $Path=/nexus". Illegal path attribute "/nexus". Path of origin: "/content/repositories/snapshots/${groupId}/${artifactId}/"
2015-3-19 10:20:47 org.apache.commons.httpclient.HttpMethodBase processResponseHeaders
警告: Cookie rejected: "$Version=0; rememberMe=deleteMe; $Path=/nexus". Illegal path attribute "/nexus". Path of origin: "/content/repositories/snapshots/${groupId}/${artifactId}/${version}/"
2015-3-19 10:20:47 org.apache.commons.httpclient.HttpMethodBase processResponseHeaders
警告: Cookie rejected: "$Version=0; rememberMe=deleteMe; $Path=/nexus". Illegal path attribute "/nexus". Path of origin: "/content/repositories/snapshots/${groupId}/${artifactId}/${version}/${artifactId}-xxx.jar"
…… ……
[INFO] Uploaded: http://maven.mysite.com/content/repositories/snapshots/${groupId}/${artifactId}/${version}/${artifactId}-3.0.4-20150319.022040-25.jar (60 KB at 76.6 KB/sec)

系统环境

私服是搭建在一台 Windows Server 2008 的阿里云服务器上,Nexus 的版本为 2.8.1,通过 Ngnix 1.7.10 进行反向代理(http://maven.mysite.com/ 直接指向 http://127.0.0.1:8081/nexus)。 开发机是 Windows 7,使用 Maven 版本为 3.0.4。

问题分析

根据控制台输出的警告信息可知,这是 cookie 的 path 属性不一致,需要 path=/nexus 下的 cookie,而现在对应的路径 /content/repositories/snapshots/${groupId}/${artifactId}/${version}/ 中并不包含 /nexus 这一级。根据这个判断,于是我将 snapshots 的 URL 由 http://maven.gboat.xyz/content/repositories/snapshots
改为 http://maven.gboat.xyz:8081/nexus/content/repositories/snapshots,然后重新执行 mvn clean deploy 发布 jar 包到私服,这一次的发布过程中果然没有出现任何警告信息。因为修改之后的这个 URL 是没有通过 Nginx 作代理进行转发的,所以,现在已经可以确定问题是出在 Nginx 的代理配置这一块了。

解决方案

问题产生的原因已经找到了,接下来就是根据问题原因寻找对应的解决方案了。经过查阅资料得知,只需要在 Nginx 的代理配置中增加 cookie 的 path 映射关系即可,官方文档请参见:ngx_http_proxy_module
模块中的 proxy_cookie_path
,修改后的配置如下:

# Maven
server {
    listen       80;
    server_name  maven.mysite.com;

    location / {
        proxy_pass              http://127.0.0.1:18081/nexus/;
        proxy_redirect          off;
        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        Upgrade $http_upgrade;
	proxy_cookie_path       /nexus /;
        …… ……
    }
    location ~ ^/nexus/(.*)$ {
        return       301 /$1;
    }
}

另外,如果您是使用的 Apathe 做反向代理,那应该通过 ProxyPassReverseCookiePath 进行配置,如:

ProxyPassReverseCookiePath /nexus /
时间: 2024-10-08 17:38:06

Cookie rejected: Illegal path attribute "/nexus". Path of origin: "/content/" 解决方案的相关文章

The Path Attribute

https://tools.ietf.org/html/rfc6265#section-5.1.1 4.1.2.4. The Path Attribute The scope of each cookie is limited to a set of paths, controlled by the Path attribute. If the server omits the Path attribute, the user agent will use the "directory"

HttpClient3.1 警告: Cookie rejected:

四月 16, 2015 5:26:41 下午 org.apache.commons.httpclient.HttpMethodBase processCookieHeaders 警告: Cookie rejected: "$Version="1"; BAIDUID="1E6B32311ACAB688169606EB8862CD69:FG=1"; $Path="/"; $Domain=".baidu.com""

os模块 os.stat('path/filename') os.path.dirname(path) os.path.exists(path)  os.path.join(path1[, path2[, ...]])

提供对操作系统进行调用的接口 1 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 2 os.chdir("dirname")  改变当前脚本工作目录:相当于shell下cd 3 os.curdir  返回当前目录: ('.') 4 os.pardir  获取当前目录的父目录字符串名:('..') 5 os.makedirs('dirname1/dirname2')    可生成多层递归目录 6 os.removedirs('dirname1')    若

sys.path和os.path

sys.path和os.path1.sys.path是python搜索模块的路径集合,是个list:os.path是os的一个模块,是操作文件和目录的模块 2.sys.path和PYTHONPATH首先PYTHONPATH可以通过sys.path来查看可以通过sys.path.append(path)将某些文件路径添加到PYTHONPATH,但是在退出python环境后自己添加的路径会消失 3.如何添加永久性PYTHONPATH将py文件放到site_packages目录下面

ntpath join(path, *paths) 发生UnicodeDecodeError的Bug的解决方案

最近在学习用Python开发web,使用的是web框架,在win8.1平台下安装SAE和Flask的时候总是在ntpath.py这个UnicodeDecodeError模块报错. 84行 result_path = result_path+ p_path 显示的错误就是UnicodeDecodeError ascii/unicode can not decode 0xc3 range 128的错误.在安装SAE的时候也遇到这个错误了,找到错误的原因是我的User名是中文,中文unicode码是\

path.join()与path.resolve()区别

1.path.resolve([...paths]) path.resolve() 方法会把一个路径或路径片段的序列解析为一个绝对路径. 给定的路径的序列是从右往左被处理的,后面每个 path 被依次解析,直到构造完成一个绝对路径. 例如,给定的路径片段的序列为:/foo./bar.baz,则调用 path.resolve('/foo', '/bar', 'baz') 会返回 /bar/baz. 如果处理完全部给定的 path 片段后还未生成一个绝对路径,则当前工作目录会被用上. 生成的路径是规

node模块之path——path.join和path.resolve的区别

1.path.join([...paths]) path.join() 方法使用平台特定的分隔符把全部给定的 path 片段连接到一起,并规范化生成的路径. 长度为零的 path 片段会被忽略. 如果连接后的路径字符串是一个长度为零的字符串,则返回 '.',表示当前工作目录. 以上是nodejs官方文档上的描述.我们可以抓取几个关键字,"平台特定的分隔符"."path片段", "规范化". "平台特定的分隔符": window

golang程序编译时提示“package runtime: unrecognized import path "runtime" (import path does not begin with hostname)”

在编译golang的工程时提示错误的, 提示的错误信息如下: package bytes: unrecognized import path "bytes" (import path does not begin with hostname) package encoding/json: unrecognized import path "encoding/json" (import path does not begin with hostname) packag

[python] File path and system path

1. get current path of where you are cur_path  =  os.getcwd()