我当前正在使用puma和nginx反向代理运行sinatra应用。会话和cookie可以很好地保存在任何获取请求中,如通过日志记录所见:
{"user_id"=>1, "session_id"=>"89bb966142230a06fb5103db746c3011a741d88c7759dc2bff00c6bdd597c946"}
user_id是表示会话的重要部分,它维护了其信息。但是,一旦我尝试通过表单发布,我就会丢失以下关键信息:
"POST /price HTTP/1.0" 302 - 0.0045
{"session_id"=>"89bb966142230a06fb5103db746c3011a741d88c7759dc2bff00c6bdd597c946"}
我的会话sinatra配置为:
use Rack::Session::Cookie, :key => 'rack.session',
:path => '/',
:secret => ENV['secret']
在该应用程序的所有其他方案中似乎都可以正常工作。
此应用程序的我的Nginx反向代理设置为:
server {
root /var/www/app/public;
access_log /var/www/app/var/log/nginx_access.log;
error_log /var/www/app/var/log/nginx_error.log;
location / {
try_files $uri @app;
}
location @app {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://admin_server;
proxy_pass_request_headers on;
proxy_cookie_domain localhost $http_host;
}
#certbot ssl stuff
}
由于身份验证检查和会话持久性的所有其他方面似乎都可以正常工作,但我现在处于相对亏损的状态,但是表单发布分崩离析。任何指导和帮助都将大有帮助!