Điểm:0

Không thể đăng nhập qua webdav trên nginx

lá cờ cn

CHỈNH SỬA Nextcloud xây dựng triển khai Webdav của riêng mình, Sabredav.

Nó có thể là các mô-đun nginx sau đang can thiệp? --with-http_dav_module --add-module=/var/tmp/nginx-dav-ext-module

Ai đó biết làm thế nào tôi nên biên dịch chúng một cách linh hoạt? Vì vậy, tôi có thể tải/dỡ tải trong thời gian chạy trên mỗi cấu hình máy chủ ảo?

Cám ơn :) CHỈNH SỬA KẾT THÚC

Tôi đang chạy Máy chủ Ubuntu 20.04 trên một máy chủ cá nhân nơi tôi đã triển khai cài đặt thủ công đám mây tiếp theo đang hoạt động bình thường ngoại trừ webdav.

Toàn bộ điều đang chạy theo nginx 1.19.3, php-8.0FPM.

Đang cố gắn thư mục riêng nextcloud thông qua davfs:

# mount -t davfs https://drive.example.com/remote.php/dav/files/myuser/ /mnt
Vui lòng nhập tên người dùng để xác thực với máy chủ
https://drive.example.com/remote.php/dav/files/myuser/ hoặc không nhấn enter.
  Tên người dùng: myuser
Vui lòng nhập mật khẩu để xác thực người dùng myuser với máy chủ
https://drive.example.com/remote.php/dav/files/myuser/ hoặc không nhấn enter.
  Mật khẩu:
/sbin/mount.davfs: Gắn không thành công.
Không thể xác thực với máy chủ: bị từ chối Thử thách cơ bản

Nhật ký Nextcloud liên quan đến trước đó gắn kết chỉ huy:

# mèo /home/nginx/Tools/nextcloud_data/nextcloud.log
{"reqId":"gf8ZgEQVDV7AoHp667YG","level":2,"time":"2022-04-05T17:50:58+00:00","remoteAddr":"x.y.z.w","user":"-- ""app":"core","method":"OPTIONS","url":"/remote.php/dav/files/myuser/","message":"Đăng nhập không thành công: 'myuser' (IP từ xa : 'x.y.z.w')","userAgent":"davfs2/1.5.5 neon/0.30.2","version":"23.0.3.2"}

Nhật ký Nginx liên quan đến phần trước gắn kết chỉ huy:

# con mèo /var/log/nginx/nextcloud.log
x.y.z.w drive.example.com - [05/Apr/2022:13:53:31 -0400] "TÙY CHỌN /remote.php/dav/files/myuser/ HTTP/1.1" 401 569 "-" "davfs2/1.5.5 neon/0.30.2" "-" "-"
x.y.z.w drive.example.com myuser [05/Apr/2022:13:53:57 -0400] "TÙY CHỌN /remote.php/dav/files/myuser/ HTTP/1.1" 401 427 "-" "davfs2/1.5.5 neon/0.30.2" "-" "CRYPTED_PASSWORD cơ bản"

Một số thông tin Ubuntu không liên quan:

# lsb_release -a
Không có mô-đun LSB nào khả dụng.
ID nhà phân phối: Ubuntu
Mô tả: Ubuntu 20.04.4 LTS
Phát hành: 20.04
Tên mã: tiêu cự

# uname -a
Linux host.example.com 5.4.0-107-generic #121-Ubuntu SMP Thứ năm ngày 24 tháng 3 16:04:27 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Nginx đã được tải xuống và biên dịch từ mã nguồn repo chính thức của nginx và thông qua apt:

# apt nguồn nginx
# cd nginx-0.8.54
# chỉnh sửa debian/quy tắc
# dpkg-buildpackage -b nginx

Nginx phiên bản, tính năng và tham số biên dịch:

# nginx -vV
phiên bản nginx: nginx/1.19.3
được xây dựng bởi gcc 9.3.0 (Ubuntu 9.3.0-10ubuntu2)
được xây dựng với OpenSSL 1.1.1g 21 Th04 2020
Đã bật hỗ trợ TLS SNI
cấu hình đối số: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx. conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx. pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/ nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/ var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module - -with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module - -với-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -fdebug -prefix-map=/var/tmp/nginx-1.19.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl, -z,now -Wl,--as-needed -pie' --add-dynamic-module=/var/tmp/ngx_http_geoip2_module --with-http_geoip_module --with-http_dav_module --add-module=/var/tmp/ nginx-dav-ext-module -- Without-mail_imap_module -- Without-mail_pop3_module -- Without-mail_smtp_module -- Without-http_limit_conn_module --add-module=/var/tmp/incubator-pagespeed-ngx-1.13.35.2-stable/ --add-module=/home/nginx/Tools/openproject/.rbenv/versions/2.6.1//lib/ruby/gems/2.6.0//gems/passenger-6.0.6/src/nginx_module/

PHP thông tin:

# php8.0 --version
PHP 8.0.15 (cli) (được xây dựng: ngày 29 tháng 1 năm 2022 07:24:52) ( NTS )
Bản quyền (c) Nhóm PHP
Zend Engine v4.0.15, Bản quyền (c) Zend Technologies
    với Zend OPcache v8.0.15, Bản quyền (c), bởi Zend Technologies


# php8.0 -m
[Mô-đun PHP]
apcu
bcmath
bz2
lịch
Cốt lõi
ctype
Xoăn
ngày tháng
nhà thờ
Exif
FFI
nộp thông tin
lọc
ftp
gđ
lấy văn bản
gmp
băm
iconv
nhị phân
tưởng tượng
quốc tế
json
libxml
chuỗi mb
bộ nhớ đệm
mongodb
mysqli
mysqlnd
opensl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
phar
tư thế
đánh vần
dòng đọc
làm lại
Sự phản xạ
phiên họp
con tép
SimpleXML
xà bông tắm
ổ cắm
natri
SPL
sqlite3
Tiêu chuẩn
sysvmsg
hệ thống
sysvshm
mã thông báo
xml
trình đọc xml
xmlrpc
xmlwriter
xsl
Zend OPcache
khóa kéo
zlib

[Mô-đun Zend]
Zend OPcache

đám mây tiếp theo thông tin:

# sudo -u nginx php8.0 /home/nginx/Tools/nextcloud/occ status
  - đã cài đặt: đúng
  - phiên bản: 23.0.3.2
  - chuỗi phiên bản: 23.0.3
  - phiên bản:
  - bảo trì: sai
  - nhu cầuDbUpgrade: sai
  - tên sản phẩm: Nextcloud
  - Hỗ trợ mở rộng: sai

Tệp máy chủ ảo Nginx:

# mèo /etc/nginx/sites-enabled/nextcloud.conf

mèo /etc/nginx/sites-enabled/nextcloud.conf
trình xử lý php ngược dòng {
    máy chủ unix:/var/run/php/php8.0-fpm.sock;
}

# Chỉ đặt các tùy chọn kiểm soát bộ nhớ cache `bất biến` cho các nội dung có đối số `v` chặn truy xuất bộ nhớ cache
bản đồ $arg_v $asset_immutable {
    """";
    mặc định "bất biến";
}

người phục vụ {
    nghe 80;
    nghe [::]:80;
    server_name drive.foobar.es drive.foobar.com cloud.foobar.es cloud.foobar.com cloud.example.es cloud.example.com cloud.example.net cloud.example.org cloud.example.info drive.example. là drive.example.com drive.example.org drive.example.net drive.example.info drive.example.cat cloud.example.cat;

    access_log /var/log/nginx/nextcloud.access.log chính;
    error_log /var/log/nginx/nextcloud.error.log crit;

    trả lại 301 https://$host$request_uri;
# trả lại 302 https://$host$request_uri;
}

người phục vụ {
    nghe 443 ssl http2;
    nghe [::]:443 ssl http2;
    server_name drive.foobar.es drive.foobar.com cloud.foobar.es cloud.foobar.com cloud.example.es cloud.example.com cloud.example.net cloud.example.org cloud.example.info drive.example. là drive.example.com drive.example.org drive.example.net drive.example.info drive.example.cat cloud.example.cat;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    bao gồm /etc/nginx/conf.d-enabled/ssl-security.conf;
    ssl_trusted_certificate /etc/letsencrypt/live/example.es/cert.pem;

    access_log /var/log/nginx/nextcloud_ssl.access.log chính;
    error_log /var/log/nginx/nextcloud_ssl.error.log crit;

    # Codi per halitar la renovació dels certificats Letsencrypt
    bao gồm /etc/nginx/snippets/letsencrypt-cert-renewal-dir.conf;

    if ($http_host != "drive.example.com") {
    viết lại ^ https://drive.example.com$request_uri vĩnh viễn;
    nghỉ;
    }

    # cài đặt HSTS
    # CẢNH BÁO: Chỉ thêm tùy chọn tải trước sau khi bạn đọc về
    # hậu quả trong hstspreload.org. tùy chọn này
    # sẽ thêm tên miền vào danh sách mã hóa cứng được vận chuyển
    # trong tất cả các trình duyệt chính và bị xóa khỏi danh sách này
    # có thể mất vài tháng.
    #add_header Giao thông-An ninh nghiêm ngặt "max-age=15768000; bao gồm các miền phụ; tải trước;" luôn;

    vị trí = /robots.txt {
        chấp nhận tất cả;
        log_not_found tắt;
        truy cập_đăng xuất;
    }

    # Tạo ngoại lệ biểu thức chính quy cho `/.well-known` để khách hàng vẫn có thể
    # truy cập nó bất chấp sự tồn tại của quy tắc regex
    # `location ~ /(\.|autotest|...)` nếu không sẽ xử lý các yêu cầu
    # cho `/.nổi tiếng`.
    vị trí ^~ /.well-known {
        # Các quy tắc trong khối này là sự điều chỉnh của các quy tắc
        # trong `.htaccess` liên quan đến `/.well-known`.

        vị trí = /.well-known/carddav { return 301 /remote.php/dav/; }
        vị trí = /.well-known/caldav { return 301 /remote.php/dav/; }

        vị trí /.well-known/acme-challenge { try_files $uri $uri/ =404; }
        vị trí /.well-known/pki-validation { try_files $uri $uri/ =404; }

        # Hãy để API của Nextcloud dành cho URI `/.well-known` xử lý tất cả những thứ khác
        # yêu cầu bằng cách chuyển chúng đến bộ điều khiển giao diện người dùng.
        trả về 301 /index.php$request_uri;
    }

#địa điểm ^~ / {
    # đặt kích thước tải lên tối đa và tăng thời gian chờ tải lên:
    client_max_body_size 50G;
    client_body_timeout 300s;
    fastcgi_buffers 64 4K;

    client_body_temp_path /home/nginx/Tools/nextcloud_data/tmp/;
    fastcgi_param PHP_VALUE "upload_tmp_dir=/home/nginx/Tools/nextcloud_data/tmp/;";
    fastcgi_param PHP_VALUE "output_buffering=0;";
    add_header X-Accel-Buffering không;

    # Bởi vì php-fpm không thể đọc cài đặt PHP trong .htaccess các cài đặt này
    # phải được đặt trong nextcloud/.user.ini
    # fastcgi_param PHP_VALUE "upload_max_filesize=5M;\n error_reporting=E_ALL;";
    fastcgi_param PHP_VALUE "upload_max_filesize=50G;";
    fastcgi_param PHP_VALUE "post_max_size=50G;";
    fastcgi_param PHP_VALUE "max_input_time=4600;";
    fastcgi_param PHP_VALUE "max_execution_time=3600;";
    fastcgi_param PHP_VALUE "request_terminate_timeout=3600;";
    fastcgi_read_timeout 3600;

    # Bật gzip nhưng không xóa tiêu đề ETag
    bật gzip;
    bật gzip_vary;
    gzip_comp_level 4;
    gzip_min_length 256;
    gzip_proxied đã hết hạn no-cache no-store private no_last_modified no_etatag auth;
    ứng dụng gzip_types/atom+ứng dụng xml/ứng dụng javascript/ứng dụng json/ứng dụng ld+json/manifest+ứng dụng json/ứng dụng rss+xml/vnd.geo+ứng dụng json/vnd.ms-ứng dụng phông chữ/ứng dụng wasm/x-phông chữ- ứng dụng ttf/x-web-app-manifest+ứng dụng json/xhtml+ứng dụng xml/phông chữ xml/hình ảnh opentype/hình ảnh bmp/svg+hình ảnh xml/văn bản biểu tượng x/văn bản tệp kê khai bộ đệm/văn bản css/văn bản thuần túy/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;

    # Tốc độ trang không được Nextcloud hỗ trợ, vì vậy nếu máy chủ của bạn được xây dựng
    # với mô-đun `ngx_pagespeed`, hãy bỏ ghi chú dòng này để tắt nó.
    tắt tốc độ trang;

    # Tiêu đề phản hồi HTTP mượn từ Nextcloud `.htaccess`
    add_header Chính sách liên kết giới thiệu luôn luôn "không có liên kết giới thiệu";
    add_header X-Content-Type-Options "nosniff" luôn;
    add_header X-Download-Options "noopen" luôn;
    add_header X-Frame-Options luôn luôn "SAMEORIGIN";
    add_header Chính sách tên miền chéo được phép "không có" luôn luôn;
    add_header X-Robots-Tag "none" luôn luôn;
    add_header X-XSS-Protection "1; mode=block" luôn luôn;

    # Loại bỏ X-Powered-By, đây là một vụ rò rỉ thông tin
    fastcgi_hide_header X-Powered-By;

    # Đường dẫn đến thư mục gốc của bản cài đặt của bạn
    gốc /home/nginx/Tools/nextcloud/;

    # Chỉ định cách xử lý các thư mục -- chỉ định `/index.php$request_uri`
    # ở đây là dự phòng có nghĩa là Nginx luôn thể hiện hành vi mong muốn
    # khi khách hàng yêu cầu đường dẫn tương ứng với thư mục tồn tại
    # trên máy chủ. Cụ thể, nếu thư mục đó chứa tệp index.php,
    # tệp đó được phục vụ chính xác; nếu không, thì yêu cầu được chuyển đến
    # bộ điều khiển mặt trước. Hành vi nhất quán này có nghĩa là chúng ta không cần
    # để chỉ định các quy tắc tùy chỉnh cho các đường dẫn nhất định (ví dụ: hình ảnh và nội dung khác,
    # `/updater`, `/ocm-provider`, `/ocs-provider`), và do đó
    # `try_files $uri $uri/ /index.php$request_uri`
    # luôn cung cấp hành vi mong muốn.
    chỉ mục index.php index.html /index.php$request_uri;

    # Quy tắc mượn từ `.htaccess` để xử lý ứng dụng khách Microsoft DAV
    vị trí = / {
        nếu ( $http_user_agent ~ ^DavClnt ) {
            trả về 302 /remote.php/webdav/$is_args$args;
        }
    }

    # Các quy tắc mượn từ `.htaccess` để ẩn các đường dẫn nhất định khỏi máy khách
    vị trí ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/) { return 404; }
    vị trí ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { return 404; }

    # Đảm bảo rằng khối này chuyển các tệp PHP tới quy trình PHP, nằm trên các khối
    # xử lý nội dung tĩnh (như bên dưới). Nếu khối này không được khai báo trước,
    # sau đó Nginx sẽ gặp phải một vòng lặp viết lại vô hạn khi nó thêm `/index.php` vào trước
    # vào URI, dẫn đến phản hồi lỗi HTTP 500.
    vị trí ~ \.php(?:$|/) {
        # Cần thiết cho hỗ trợ kế thừa
        viết lại ^/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+|. +\/richdocumentscode\/proxy) /index.php$request_uri;

        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        đặt $path_info $fastcgi_path_info;

        try_files $fastcgi_script_name =404;

        bao gồm fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $path_info;
        fastcgi_param bật HTTPS;

        fastcgi_param modHeadersAvailable true; # Tránh gửi tiêu đề bảo mật hai lần
        fastcgi_param front_controller_active true; # Kích hoạt các url đẹp
        fastcgi_pass trình xử lý php;

        bật fastcgi_intercept_errors;
        tắt fastcgi_request_buffering;

        fastcgi_max_temp_file_size 0;
    }

   vị trí ~ \.(?:css|js|svg|gif|png|jpg|ico|wasm|tflite|map)$ {
        try_files $uri /index.php$request_uri;
        add_header Kiểm soát bộ đệm "public, max-age=15778463, $asset_immutable";
        truy cập_đăng xuất; # Tùy chọn: Không đăng nhập quyền truy cập vào nội dung

        vị trí ~ \.wasm$ {
            ứng dụng default_type/wasm;
        }
    }

    vị trí ~ \.woff2?$ {
        try_files $uri /index.php$request_uri;
        hết hạn 7d; # Chính sách kiểm soát bộ đệm mượn từ `.htaccess`
        truy cập_đăng xuất; # Tùy chọn: Không đăng nhập quyền truy cập vào nội dung
    }

    # Bỏ qua thông báo tường trìnhï
    # Nếu bạn đang thấy các thông báo vô nghĩa trong tệp nhật ký của mình, chẳng hạn như ứng dụng khách bị từ chối bởi cấu hình máy chủ: /var/www/data/htaccesstest.txt, hãy thêm phần này vào cấu hình nginx của bạn để chặn chúng:
    vị trí = /data/htaccesstest.txt {
        chấp nhận tất cả;
        log_not_found tắt;
        truy cập_đăng xuất;
    }

    # Quy tắc mượn từ `.htaccess`
    vị trí /từ xa {
        trả về 301 /remote.php$request_uri;
    }

    địa điểm / {
        try_files $uri $uri/ /index.php$request_uri;
    }
#}
}

Tệp cấu hình Nginx SSL được bao gồm trong tập tin cấu hình máy chủ ảo nginx:

# con mèo /etc/nginx/conf.d-enabled/ssl-security.conf
  # kích hoạt nối lại phiên để cải thiện hiệu suất https
  # vincent.bernat.im/en/blog/2011-ssl-session-reuse-rfc5077.html
  ssl_session_cache được chia sẻ:SSL:50m;
  ssl_session_timeout 1d;
  tắt ssl_session_tickets;

  # Tham số Diffie-Hellman cho bộ mật mã DHE, khuyến nghị 2048 bit
  #ssl_dhparam /etc/ssl/certs/dhparam.pem;
  # openssl dhparam -dsaparam -out /etc/ssl/private/dhparam.pem 4096
  ssl_dhparam /etc/ssl/certs/dhparam4096.pem;

  # cho phép bảo vệ phía máy chủ khỏi các cuộc tấn công BEAST
  # blog.ivaristic.com/2013/09/is-beast-still-a-threat.html
  bật ssl_prefer_server_ciphers;

  # tắt SSLv3(được bật theo mặc định kể từ nginx 0.8.19) vì nó kém an toàn hơn TLS en.wikipedia.org/wiki/Secure_Sockets_Layer#SSL_3.0
  # Giao thức bị vô hiệu hóa: TLSv1 TLSv1.1
  ssl_protocols SSLv3 TLSv1.2 TLSv1.3;
# ssl_giao thức TLSv1 TLSv1.1 TLSv1.2;

  # mật mã được chọn để bảo mật chuyển tiếp và tương thích
  # blog.ivaristic.com/2013/08/conforming-apache-nginx-and-openssl-for-forward-secrecy.html
  ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE- RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128- SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256: DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES- CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';

  # kích hoạt tính năng dập ghim ocsp (cơ chế mà một trang web có thể truyền thông tin thu hồi chứng chỉ tới khách truy cập theo cách có thể mở rộng, bảo vệ quyền riêng tư)
  # blog.mozilla.org/security/2013/07/29/ocsp-stapling-in-firefox/
  bộ phân giải 8.8.8.8 8.8.4.4;
  ssl_dập ghim vào;
  ssl_stapling_verify bật;
# ssl_trusted_certificate /etc/nginx/ssl/star_forgott_com.crt;

  # cấu hình để bật HSTS(HTTP Strict Transport Security) developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security
  # để tránh bị tước ssl en.wikipedia.org/wiki/SSL_stripping#SSL_stripping
  # cũng hstspreload.org/
  add_header Strict-Transport-Security "max-age=31536000; bao gồm tên miền phụ; tải trước";

# mèo /etc/nginx/fastcgi
fastcgi.conf fastcgi_params fastcgi_params.dpkg-dist
root@we:~# mèo /etc/nginx/fastcgi_params
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;

fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param HTTPS $https if_not_empty;

fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;

fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;

# Chỉ PHP, bắt buộc nếu PHP được xây dựng với --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;

### THIẾT LẬP Biến GEOIP ###
fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;
fastcgi_param GEOIP_COUNTRY_CODE3 $geoip_country_code3;
fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;

fastcgi_param GEOIP_CITY_COUNTRY_CODE $geoip_city_country_code;
fastcgi_param GEOIP_CITY_COUNTRY_CODE3 $geoip_city_country_code3;
fastcgi_param GEOIP_CITY_COUNTRY_NAME $geoip_city_country_name;
fastcgi_param GEOIP_REGION $geoip_region;
fastcgi_param GEOIP_CITY $geoip_city;
fastcgi_param GEOIP_POSTAL_CODE $geoip_postal_code;
fastcgi_param GEOIP_CITY_CONTINENT_CODE $geoip_city_continent_code;
fastcgi_param GEOIP_LATITUDE $geoip_latitude;
fastcgi_param GEOIP_LONGITUDE $geoip_longitude;

Cảm ơn bạn rất nhiều trong nâng cao.

Hy vọng ai đó có thể giúp đỡ :)

Điểm:0
lá cờ cn

Biên dịch nginx mà không có mô-đun ngx_http_dav_ext đã khắc phục sự cố. Ngoài ra, việc biên dịch nginx với mô-đun dưới dạng động cũng hoạt động.

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