Điểm:0

Vòng lặp chuyển hướng vô tận trên cấu hình nginx

lá cờ cn

Tôi có cấu hình nginx với SSL được định cấu hình và hai lần chuyển hướng đến bộ chứa docker. Một trong số chúng (chỉnh sửa https://psono.example.com/portal) đang hoạt động, nhưng cái chuyển tiếp tên miền (chỉnh sửa https://psono.example.com/) không hoạt động và thay vào đó dẫn đến chuyển hướng vô tận (https://psono.example.com/psono.example.com/psono.example.com/psono.example.com/psono.example.com/...)

Đây là cấu hình của tôi.

người phục vụ {
    nghe 80;
    server_name psono.example.com;
    trả lại 301 https://$host$request_uri;
}

người phục vụ {
    nghe 443 ssl http2;
    server_name psono.example.com;    
    ssl_protocols TLSv1.2;
    bật ssl_prefer_server_ciphers;
    ssl_session_cache được chia sẻ:SSL:10m;
    tắt ssl_session_tickets;
    ssl_dập ghim vào;
    ssl_stapling_verify bật;
    ssl_session_timeout 1d;
    trình phân giải 8.8.8.8 8.8.4.4 hợp lệ=300 giây;
    bộ phân giải_thời gian chờ 5 giây;
    ssl_ciphers'';

    # Bình luận điều này nếu bạn biết bạn đang làm gì
    # add_header Strict-Transport-Security "max-age=63072000; bao gồm tên miền phụ; tải trước";

    add_header Chính sách giới thiệu cùng nguồn gốc;
    add_header X-Frame-Options TỪ CHỐI;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";

    # Nếu bạn cũng đã cài đặt máy chủ tệp quản trị phía sau miền proxy ngược này, hãy thêm URL máy chủ tệp của bạn, ví dụ:. https://fs01.example.com cũng là connect-src:
    add_header Chính sách-bảo mật nội dung "default-src 'none'; manifest-src 'self'; connect-src 'self' https://static.psono.com https://api.pwnedpasswords.com https://storage .googleapis.com https://*.digitaloceanspaces.com https://*.blob.core.windows.net https://*.s3.amazonaws.com; font-src 'self'; img-src 'self' ' data:; script-src 'self'; style-src 'self' 'unsafe-inline'; object-src 'self'";

    ssl_certificate /etc/letsencrypt/live/psono.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/psono.example.com/privkey.pem;

    client_max_body_size 256m;

    bật gzip;
    gzip_disable "msie6";
    
bật gzip_vary;
    gzip_proxied bất kỳ;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_min_length 256;
    văn bản gzip_types/văn bản thuần túy/ứng dụng css/ứng dụng json/ứng dụng x-javascript/văn bản javascript/ứng dụng xml/ứng dụng xml/văn bản xml+rss/ứng dụng javascript/ứng dụng vnd.ms-fontobject/phông chữ x-font-ttf/hình ảnh opentype /svg+xml image/x-icon;
    
    gốc/var/www/html;
    
    vị trí/máy chủ {
                viết lại ^/server/(.*) /$1 break;
                proxy_set_header Máy chủ lưu trữ $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;

        add_header Sửa đổi lần cuối $date_gmt;
        add_header Pragma "no-cache";
        add_header Cache-Control "riêng tư, max-age=0, no-cache, no-store";
        if_modified_kể từ khi tắt;
        hết hạn;
        tắt thẻ;
    
                proxy_pass http://localhost:10100;
    }
    
    vị trí ~* ^/portal.*\.(?:ico|css|js|gif|jpe?g|png|eot|woff|woff2|ttf|svg|otf)$ {
        hết hạn 30d;
        add_header Pragma công khai;
        add_header Kiểm soát bộ đệm "công khai";

        # Xóa # ở đầu các dòng sau nếu bạn có máy khách web quản trị đang chạy trong bộ chứa docker
        proxy_set_header Máy chủ lưu trữ $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_pass http://localhost:10102;
        proxy_redirect http://localhost:10102 https://psono.example.com;
    }
 vị trí ~* \.(?:ico|css|js|gif|jpe?g|png|eot|woff|woff2|ttf|svg|otf)$ {
        hết hạn 30d;
        add_header Pragma công khai;
        add_header Kiểm soát bộ đệm "công khai";
    
        # Xóa # ở đầu các dòng sau nếu bạn có webclient đang chạy trong bộ chứa docker
        proxy_set_header Máy chủ lưu trữ $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_pass http://localhost:10101;
        proxy_redirect http://localhost:10101 https://psono.example.com;
    }
    
    # Xóa # hàng đầu khỏi các dòng sau nếu bạn có máy khách web quản trị đang chạy trong bộ chứa docker
     vị trí/cổng thông tin {
                proxy_set_header Máy chủ lưu trữ $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;

                proxy_read_timeout 90;

                proxy_pass http://localhost:10102;
     }
    
    # Xóa # hàng đầu khỏi các dòng sau nếu bạn có máy khách web quản trị KHÔNG chạy trong bộ chứa docker
    # vị trí/cổng thông tin {
    # chỉ mục index.html index.htm;
    # try_files $uri /portal/index.html; # chuyển tiếp tất cả các yêu cầu tới index.html
    # }
    
    # Xóa # ở đầu các dòng sau nếu bạn có webclient đang chạy trong bộ chứa docker
    địa điểm / {
                proxy_set_header Máy chủ lưu trữ $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;

                proxy_pass http://localhost:10101;
                proxy_read_timeout 90;
        #
                proxy_redirect http://localhost:10101 https://psono.example.com;
    }
}

Chỉnh sửa Đầu ra của curl -v là:


* Đang thử 5.9.74.183:443...
* Bộ TCP_NODELAY
* Đã kết nối với cổng psono.example.com (5.9.74.183) 443 (#0)
* ALPN, cung cấp h2
* ALPN, cung cấp http/1.1
* đặt thành công vị trí xác minh chứng chỉ:
* Tệp CA: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), bắt tay TLS, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), bắt tay TLS, Chứng chỉ (11):
* TLSv1.2 (IN), bắt tay TLS, trao đổi khóa máy chủ (12):
* TLSv1.2 (IN), bắt tay TLS, Máy chủ hoàn tất (14):
* TLSv1.2 (OUT), bắt tay TLS, Trao đổi khóa máy khách (16):
* TLSv1.2 (OUT), Thay đổi mật mã TLS, Thay đổi thông số mật mã (1):
* TLSv1.2 (OUT), bắt tay TLS, Đã hoàn thành (20):
* TLSv1.2 (IN), bắt tay TLS, Đã hoàn thành (20):
* Kết nối SSL sử dụng TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, máy chủ chấp nhận sử dụng h2
* Chứng chỉ máy chủ:
* chủ đề: CN=psono.example.com
* ngày bắt đầu: 1 tháng 12 14:53:24 2021 GMT
* ngày hết hạn: 1 tháng 3 14:53:23 2022 GMT
* chủ đềAltName: máy chủ "psono.example.com" khớp với "psono.example.com" của chứng chỉ
* tổ chức phát hành: C=US; O=Hãy mã hóa; CN=R3
* Chứng chỉ SSL xác minh ok.
* Sử dụng HTTP2, máy chủ hỗ trợ đa dụng
* Trạng thái kết nối đã thay đổi (đã xác nhận HTTP/2)
* Sao chép dữ liệu HTTP/2 trong bộ đệm luồng sang bộ đệm kết nối sau khi nâng cấp: len=0
* Sử dụng ID luồng: 1 (xử lý dễ dàng 0x557ac8936e10)
> NHẬN / HTTP/2
> Máy chủ: psono.example.com
> tác nhân người dùng: curl/7.68.0
> chấp nhận: */*
>
* Trạng thái kết nối đã thay đổi (MAX_CONCURRENT_STREAMS == 128)!
< HTTP/2 403
< máy chủ: nginx/1.18.0 (Ubuntu)
< ngày: Thứ năm, ngày 02 tháng 12 năm 2021 06:53:11 GMT
< loại nội dung: văn bản/html
< độ dài nội dung: 162
<
<html>
<head><title>403 Bị cấm</title></head>
<body>
<center><h1>403 Bị cấm</h1></center>
<hr><center>nginx/1.18.0 (Ubuntu)</center>
</body>
</html>

lá cờ us
URL kích hoạt vòng lặp chuyển hướng là gì? Đầu ra của `curl -v` cho URL đó là gì?
lá cờ cn
@TeroKilkanen Tôi đã cập nhật câu hỏi của mình.
lá cờ us
Bạn cần cung cấp thông tin đăng nhập xác thực HTTP với `-u :` trong curl để có được đầu ra hữu ích.
lá cờ cn
Sử dụng xác thực, tôi cũng nhận được kết quả tương tự, trang chính không được yêu cầu xác thực mà hiển thị trang đăng nhập.
lá cờ us
Ví dụ của bạn không có chuyển hướng nên không thể gây ra vòng lặp chuyển hướng. Nó hiển thị `403 Forbidden`, có nghĩa là thông tin xác thực phù hợp không được chuyển theo yêu cầu.
lá cờ cn
Tôi biết, về lý thuyết, đây là những gì tôi sẽ nói nếu tôi ở vị trí của bạn. Tôi đã thử thêm một số thứ và hóa ra đây chỉ là sự cố dành riêng cho trình duyệt này trên máy của tôi, sử dụng một trình duyệt khác hoặc cùng một trình duyệt trên một máy khác, tôi có thể truy cập trang chủ mà không cần vòng lặp chuyển hướng. Tôi đã thử thêm một số cách nữa và đã xóa hoàn toàn cookie khỏi miền và bây giờ tôi có thể truy cập trang chủ, có vẻ như đây là sự cố cụ thể của ứng dụng. Cảm ơn bạn đã xem xét điều này.
Điểm:1
lá cờ cn

Hóa ra đây không phải là sự cố nginx, mà thay vào đó là sự cố liên quan đến psono. Tôi đã đăng nhập vào trang /portal trước, điều này đặt một số cookie và sau đó tôi không thể đăng nhập vào trang chính / nữa, dẫn đến vòng lặp chuyển hướng. Xóa cookie cho tên miền cho phép tôi đăng nhập vào trang chính. Tôi đã mở một vấn đề tại psonos cho việc này: https://gitlab.com/psono/psono-server/-/issues/212

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.