Asp.net core nginx作为反向代理释放cookies
我正在尝试将nginx设置为我的web应用程序的反向代理。 该计划:Asp.net core nginx作为反向代理释放cookies,asp.net-core,nginx,cookies,reverse-proxy,Asp.net Core,Nginx,Cookies,Reverse Proxy,我正在尝试将nginx设置为我的web应用程序的反向代理。 该计划: 服务器主机上的nginx接收请求并将其传输到另一台主机 nginx作为HTTPS(全球使用的通配符证书),web应用作为HTTP 在这个阶段,我不需要nginx缓存(至少在试图找出如何使其工作的时候) nginx将所有HTTP流量重定向到HTTPS nginx阻止无主机请求 下面是一个配置: worker_processes 1; events { worker_connections 1024; } http
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
ssl_certificate ./certs/my_domain.crt;
ssl_certificate_key ./certs/my_domain.key;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
server {
listen 80;
return 444;
}
server {
listen 80;
server_name my_domain.com www.my_domain.com *.my_domain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name my_domain.com;
location / {
root html;
index index.html index.htm;
}
}
server {
listen 443 ssl;
server_name expert.my_domain.com;
location / {
proxy_pass http://192.168.0.83:50000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
在查看nginx文档时,我注意到必须显式地打开缓存(默认情况下关闭代理缓存)。但是我不确定是否需要做些别的事情来完全关闭它
顺序如下:
Request Method: GET
Request Scheme: https
Request Path: /
Request Headers:
Cache-Control: max-age=0
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7,ky;q=0.6
Host: expert.my_domain.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36
Upgrade-Insecure-Requests: 1
X-Original-Proto: http
X-Real-IP: 192.168.0.83
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
X-Original-For: [::ffff:192.168.0.12]:54038
注意cookie部分的缺失
我相信这与缓存有关。似乎在另一个选项卡中打开页面后,浏览器(本例中为chrome)会向我显示一个缓存版本,其中存在cookie。但不确定是谁缓存了它-nginx还是chrome。在那呼呼声之后,它就消失了
为什么我认为这是nginx的一个问题?当直接用应用程序做同样的事情时,没有任何问题。它完全按照预期工作
这里可能缺少什么?是否涉及缓存问题?如何使用nginx完全禁用缓存?检查浏览器开发工具的运行情况。Cookies是由客户发送的,客户有责任存储Cookies并在每次请求时发送Cookies。因此,您应该在客户端(浏览器)中检查cookie值的变化。特别是检查
设置Cookie
响应头,查看Cookie是否为其他域或路径设置。谢谢。这似乎是由我的一个分机(快速拨号)发出的跨站点请求(在应用程序中是禁止的)。不知道为什么我在使用nginx之前没有看到这一点。将联系作者。检查浏览器开发工具的运行情况。Cookies是由客户发送的,客户有责任存储Cookies并在每次请求时发送Cookies。因此,您应该在客户端(浏览器)中检查cookie值的变化。特别是检查设置Cookie
响应头,查看Cookie是否为其他域或路径设置。谢谢。这似乎是由我的一个分机(快速拨号)发出的跨站点请求(在应用程序中是禁止的)。不知道为什么我在使用nginx之前没有看到这一点。将联系作者。
Request Method: GET
Request Scheme: https
Request Path: /
Request Headers:
Cache-Control: max-age=0
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7,ky;q=0.6
Host: expert.my_domain.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36
Upgrade-Insecure-Requests: 1
X-Original-Proto: http
X-Real-IP: 192.168.0.83
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
X-Original-For: [::ffff:192.168.0.12]:54038