Điểm:0

Client-Ip thực với Cloudflare, Docker, Traefik và nginx được thiết lập làm proxy thư (Client-Ip trong tập lệnh PHP, không phải trong máy chủ thư ngược dòng)

lá cờ id

Tôi đặt nginx làm proxy thư, nhưng tôi gặp khó khăn khi phát hiện thư thực Khách hàng-Ip trong tập lệnh xác thực php được gọi bởi nginx qua auth_http.
Tôi không quan tâm đến việc nhận IP thực trên máy chủ thư ngược dòng.

Đây là ngăn xếp của tôi:

  • Cloudflare quản lý dns
  • Phần còn lại được xử lý với Docker

docker-compose.yml:

phiên bản: '3.9'

dịch vụ:
  traefik:
    container_name: traefik
    hình ảnh: traefik:v2.6.0
    cổng:
      - "80:80"
      - "443:443"
      - "465:465"
      - "993:993"
      - "995:995"
      ...
    nhãn:
      - traefik.enable=true
      - traefik.http.routers.traefik-public-https.tls=true
      ...
    khối lượng:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      ...
    chỉ huy:
      - --providers.docker
      - --providers.docker.exposedbydefault=false
      - --entrypoints.http.address=:80
      - --entrypoints.https.address=:443
      - --entrypoints.entrypoint-nginx-mail-465.address=:465
      - --entrypoints.entrypoint-nginx-mail-993.address=:993
      - --entrypoints.entrypoint-nginx-mail-995.address=:995
      - --entrypoints.entrypoint-forwardedHeaders-trustedIPs.forwardedHeaders.trustedIPs=${TRAEFIK_TRUSTED_IPS}
      ...

  nginx:
    container_name: nginx
    hình ảnh: nginx:1.21
    khối lượng:
      - ${PWD}/sys/nginx/vhosts:/etc/nginx/conf.d
      - ${PWD}/sys/nginx/custom.d:/etc/nginx/custom.d
      ...
    nhãn:
      - traefik.enable=true

      - traefik.tcp.routers.router-nginx-mail-465.entrypoints=entrypoint-nginx-mail-465
      - traefik.tcp.routers.router-nginx-mail-465.rule=HostSNI(`*`)
      - traefik.tcp.routers.router-nginx-mail-465.tls=true
      - traefik.tcp.routers.router-nginx-mail-465.tls.certresolver=le
      - traefik.tcp.routers.router-nginx-mail-465.service=service-nginx-mail-465
      - traefik.tcp.services.service-nginx-mail-465.loadbalancer.server.port=587

      - traefik.tcp.routers.router-nginx-mail-993.entrypoints=entrypoint-nginx-mail-993
      - traefik.tcp.routers.router-nginx-mail-993.rule=HostSNI(`*`)
      - traefik.tcp.routers.router-nginx-mail-993.tls=true
      - traefik.tcp.routers.router-nginx-mail-993.tls.certresolver=le
      - traefik.tcp.routers.router-nginx-mail-993.service=service-nginx-mail-993
      - traefik.tcp.services.service-nginx-mail-993.loadbalancer.server.port=143

      - traefik.tcp.routers.router-nginx-mail-995.entrypoints=entrypoint-nginx-mail-995
      - traefik.tcp.routers.router-nginx-mail-995.rule=HostSNI(`*`)
      - traefik.tcp.routers.router-nginx-mail-995.tls=true
      - traefik.tcp.routers.router-nginx-mail-995.tls.certresolver=le
      - traefik.tcp.routers.router-nginx-mail-995.service=service-nginx-mail-995
      - traefik.tcp.services.service-nginx-mail-995.loadbalancer.server.port=110

      ...
  php-fpm:
    container_name: php-fpm
    hình ảnh: bitnami/php-fpm:7.4
    userns_mode: 'máy chủ'
    nhãn:
      - traefik.enable=false
    ...

.env:

#https://www.cloudflare.com/ips
# Cập nhật lần cuối: ngày 8 tháng 4 năm 2021
TRAEFIK_TRUSTED_IPS=173.245.48.0/20,103.21.244.0/22,103.22.200.0/22,103.31.4.0/22,141.101.64.0/18,108.162.192.0/18,190.93.240.0/20,188.114.96.0/20,197.234.240.0/22,198.41.128.0/17,162.158.0.0/15,104.16.0.0/ 13,104.24.0.0/14,172.64.0.0/13,131.0.72.0/22,2400:cb00::/32,2606:4700::/32,2803:f800::/32,2405:b500::/32,2405:8100: :/32,2a06:98c0::/29,2c0f:f248::/32
...

sys/nginx/vhosts/00-main.conf:

người phục vụ {
    nghe [::]:80;
    nghe 80;

    máy chủ_tên máy chủ cục bộ;

    gốc/ứng dụng/công khai;

    chỉ số index.php;

    vị trí ~ /\. {
        Phủ nhận tất cả;
    }

    vị trí ~ \.php$ {
        fastcgi_pass php-fpm:9000;
        fastcgi_index index.php;
        bao gồm fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

sys/nginx/custom.d/mail.conf:

email {
    tên máy chủ _;
    auth_http localhost:80/proxy.php;
    bật proxy_pass_error_message;

    imap_capabilities IMAP4 IMAP4rev1 ĐĂNG NHẬP-GIỚI THIỆU SASL-IR BẬT IDLE ID LITERAL+;
    pop3_capabilities CAPA RESP-CODES USER AUTH-RESP-CODE PIPELINING HÀNG ĐẦU UIDL;
    smtp_capabilities PIPELINING "SIZE ***" ETRN ENHANCEDSTATUSCODES 8BITMIME DSN CHUNKING;
    ...

    người phục vụ {
        nghe 110;
        giao thức pop3;
        giật mình trên;
        auth_http_header X-Auth-Port 110;
        auth_http_header Tác nhân người dùng "POP3 proxy";
    }

    người phục vụ {
        nghe 143;
        hình ảnh giao thức;
        giật mình trên;
        auth_http_header X-Auth-Port 143;
        auth_http_header Tác nhân người dùng "IMAP proxy";
    }

    người phục vụ {
        nghe 587;
        giao thức smtp;
        giật mình trên;
        auth_http_header X-Auth-Port 587;
        auth_http_header Tác nhân người dùng "SMTP proxy";
    }
}

getallheaders() bên trong proxy.php:

mảng (
  'Tác nhân người dùng' => 'Proxy IMAP',
  'Cổng X-Auth' => '143',
  'IP-Máy khách' => '172.27.0.2',
  'Auth-Đăng nhập-Thử' => '1',
  'Giao thức xác thực' => 'imap',
  'Auth-Pass' => '***',
  'Người dùng xác thực' => '***',
  'Phương thức xác thực' => 'đơn giản',
  'Máy chủ' => 'máy chủ cục bộ',
  'Độ dài nội dung' => '',
  'Loại nội dung' => '',
)

$_SERVER bên trong proxy.php:

mảng (
  'HTTP_USER_AGENT' => 'Proxy IMAP',
  'HTTP_X_AUTH_PORT' => '143',
  'HTTP_CLIENT_IP' => '172.27.0.2',
  'HTTP_AUTH_LOGIN_ATTEMPT' => '1',
  'HTTP_AUTH_PROTOCOL' => 'imap',
  'HTTP_AUTH_PASS' => '***',
  'HTTP_AUTH_USER' => '***',
  'HTTP_AUTH_METHOD' => 'đơn giản',
  'HTTP_HOST' => 'máy chủ cục bộ',
  'REDIRECT_STATUS' => '200',
  'SERVER_NAME' => 'máy chủ cục bộ',
  'SERVER_PORT' => '80',
  'SERVER_ADDR' => '127.0.0.1',
  'REMOTE_PORT' => '49360',
  'REMOTE_ADDR' => '127.0.0.1',
  'SERVER_SOFTWARE' => 'nginx/1.21.3',
  'GATEWAY_INTERFACE' => 'CGI/1.1',
  'REQUEST_SCHEME' => 'http',
  'SERVER_PROTOCOL' => 'HTTP/1.0',
  'DOCUMENT_URI' => '/proxy.php',
  'REQUEST_URI' => '/',
  'SCRIPT_NAME' => '/proxy.php',
  'CONTENT_LENGTH' => '',
  'CONTENT_TYPE' => '',
  'REQUEST_METHOD' => 'NHẬN',
  'QUERY_STRING' => '',
  'FCGI_ROLE' => 'NGƯỜI TRẢ LỜI',
  'PHP_SELF' => '/proxy.php',
  ...
)

Đă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.