使用nginx反向代理Archery后登录报403问题解决方法
使用nginx反向代理archery后,登录时会报403禁止登录,打开浏览器开发者模式可以看到是csrf校验不通过引起的。去 archery github 查看源码,在settings.py 里面可以看到有csrf相关配置:
# https://docs.djangoproject.com/en/4.0/ref/settings/#csrf-trusted-origins
CSRF_TRUSTED_ORIGINS = env("CSRF_TRUSTED_ORIGINS")
# CSRF_TRUSTED_ORIGINS=subdomain.example.com,subdomain.example2.com subdomain.example.com
CSRF_TRUSTED_ORIGINS=(list, [])
看来只需要在环境变量里将域名加入到信任列表就可以了 我的archery是通过docker-compose部署的,查看docker-compose.yml文件
archery:
image: hhyo/archery:v1.9.1
container_name: archery
restart: always
ports:
- "9123:9123"
volumes:
- "./archery/settings.py:/opt/archery/local_settings.py"
- "./archery/soar.yaml:/etc/soar.yaml"
- "./archery/docs.md:/opt/archery/docs/docs.md"
- "./archery/downloads:/opt/archery/downloads"
- "./archery/sql/migrations:/opt/archery/sql/migrations"
- "./archery/logs:/opt/archery/logs"
- "./archery/keys:/opt/archery/keys"
entrypoint: "dockerize -wait tcp://192.168.50.80:3306 -wait tcp://192.168.50.80:6379 -timeout 60s /opt/archery/src/docker/startup.sh"
env_file:
- .env
环境变量是写在同文件夹下的.env文件里的,修改.env文件,找到CSRF_TRUSTED_ORIGINS配置项,把域名追加上去就行了,记得加上protocol,我第一次就是没有加上http://导致没有成功
CSRF_TRUSTED_ORIGINS=http://127.0.0.1:9123,http://archery.starcloud.cc,https://archery.starcloud.cc
改完后执行
docker-compose -f docker-compose.yml up -d
启动后再次登录,问题解决