Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core nginx作为反向代理释放cookies_Asp.net Core_Nginx_Cookies_Reverse Proxy - Fatal编程技术网

Asp.net core nginx作为反向代理释放cookies

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

我正在尝试将nginx设置为我的web应用程序的反向代理。 该计划:

  • 服务器主机上的nginx接收请求并将其传输到另一台主机
  • nginx作为HTTPS(全球使用的通配符证书),web应用作为HTTP
  • 在这个阶段,我不需要nginx缓存(至少在试图找出如何使其工作的时候)
  • nginx将所有HTTP流量重定向到HTTPS
  • nginx阻止无主机请求
  • 下面是一个配置:

    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文档时,我注意到必须显式地打开缓存(默认情况下关闭代理缓存)。但是我不确定是否需要做些别的事情来完全关闭它

    顺序如下:

  • 通过nginx登录到web应用
  • 授权并得到一块饼干
  • 打开应用程序的第二个选项卡
  • 从步骤(2)中获取cookie
  • 刷新页面
  • 松开一块饼干(??)
  • 以下是步骤(3)后的结果:

    饼干和其他东西在那里。 下面是简单刷新后的外观:

    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