Một khách hàng đang gửi Tiêu đề HTTP tùy chỉnh X-ABC-ĐĂNG NHẬP-TÊN
đến proxy ngược Nginx của tôi. Để chắc chắn rằng nó thực sự đến, một máy chủ PHP (fastcgi) đã được cài đặt và tiêu đề này thực sự hiển thị (với một giá trị) trong thông tin php()
, phần 'Biến PHP'.
Tôi vận hành chương trình phụ trợ Django với máy chủ gunicorn và trong mã Django, tôi in tất cả các tiêu đề ra bảng điều khiển. Khi tôi gán một giá trị tĩnh cho X-ABC-ĐĂNG NHẬP-TÊN
trong /etc/nginx/sites-enabled/default, giá trị đến phần phụ trợ. trong nginx mặc định
tập tin này trông giống như:
người phục vụ {
nghe 443 ssl http2 default_server;
lắng nghe [::]:443 ssl http2 default_server;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# bao gồm đoạn trích/tự ký.conf;
# bao gồm đoạn trích/ssl-params.conf;
# tên_máy chủ localhost;
server_name dev_server;
underscores_in_headers bật;
địa điểm / {
proxy_pass http://localhost:8000;
bật proxy_pass_request_headers;
proxy_http_version 1.1;
proxy_set_header Nâng cấp $http_upgrade;
proxy_set_header X-ABC-LOGIN-NAME "static_name"; # <- "static_name" xuất hiện trong câu lệnh in python
proxy_set_header X-ABC-LOGIN-NAME $http_x_abc_login_name; # <- Giá trị này trống
proxy_set_header Kết nối vẫn hoạt động;
proxy_set_header Máy chủ lưu trữ $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
...
}
Tôi đã tìm kiếm rất nhiều trên Internet và không thể biết cách tìm tên của biến chứa giá trị hoặc nơi nó bị mất.
Chỉnh sửa: Thêm hình ảnh để làm rõ vấn đề:
Giữa Trình duyệt (Máy khách) và Máy chủ có một proxy (được gọi là ABC). Proxy này chèn Tiêu đề (X-ABC-LOGIN-NAME) vào mọi yêu cầu từ máy khách đến máy chủ. Sau khi chèn tiêu đề, yêu cầu của máy khách được chuyển tiếp đến máy chủ proxy ngược Nginx. Từ đó, tôi không thể chuyển tiếp X-ABC-LOGIN-NAME đã chèn tới máy chủ ứng dụng gunicorn.
Chỉnh sửa 2: nginx -T
ubuntu@xyz-ubuntu:~$ sudo nginx -T
nginx: cú pháp file cấu hình /etc/nginx/nginx.conf là ok
nginx: file cấu hình /etc/nginx/nginx.conf kiểm tra thành công
# tập tin cấu hình /etc/nginx/nginx.conf:
dữ liệu www của người dùng;
worker_processes tự động;
pid /run/nginx.pid;
bao gồm /etc/nginx/modules-enabled/*.conf;
sự kiện {
công_nhân kết_nối 768 ;
# đa_chấp vào ;
}
http {
underscores_in_headers bật;
##
# Cài đặt cơ bản
##
gửi tệp trên;
bật tcp_nopus;
bật tcp_nodelay;
keepalive_timeout 65;
loại_hash_max_size 2048;
# server_token tắt;
server_names_hash_bucket_size 64;
# máy chủ_tên_trong_chuyển hướng tắt;
bao gồm /etc/nginx/mime.types;
ứng dụng default_type/octet-stream;
##
# Cài đặt SSL
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Bỏ SSLv3, tham khảo: POODLE
bật ssl_prefer_server_ciphers;
##
# Cài đặt ghi nhật ký
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Cài đặt Gzip
##
bật gzip;
# gzip_vary bật;
# gzip_proxied bất kỳ;
# gzip_comp_cấp 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# văn bản gzip_types/văn bản thuần túy/ứng dụng css/ứng dụng json/văn bản javascript/ứng dụng xml/ứng dụng xml/xml+văn bản rss/javascript;
##
# Cấu hình máy chủ ảo
##
bao gồm /etc/nginx/conf.d/*.conf;
bao gồm /etc/nginx/sites-enabled/*;
}
#email {
# # Xem tập lệnh xác thực mẫu tại:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "NGƯỜI DÙNG";
# # khả năng của imap "IMAP4rev1" "UIDPLUS";
#
# người phục vụ {
# nghe máy chủ cục bộ: 110;
# giao thức pop3;
# bật proxy;
# }
#
# người phục vụ {
# nghe localhost:143;
# hình ảnh giao thức;
# bật proxy;
# }
#}
# tệp cấu hình /etc/nginx/modules-enabled/50-mod-http-image-filter.conf:
mô-đun load_module/ngx_http_image_filter_module.so;
# tệp cấu hình /etc/nginx/modules-enabled/50-mod-http-xslt-filter.conf:
mô-đun load_module/ngx_http_xslt_filter_module.so;
# tệp cấu hình /etc/nginx/modules-enabled/50-mod-mail.conf:
mô-đun load_module/ngx_mail_module.so;
# tệp cấu hình /etc/nginx/modules-enabled/50-mod-stream.conf:
mô-đun load_module/ngx_stream_module.so;
# tập tin cấu hình /etc/nginx/mime.types:
các loại {
văn bản/html html htm shtml;
văn bản/css css;
văn bản/xml xml;
hình ảnh/gif gif;
hình ảnh/jpeg jpeg jpg;
ứng dụng/javascript js;
ứng dụng/nguyên tử + nguyên tử xml;
ứng dụng/rss+xml rss;
văn bản/toán học mml;
văn bản/txt đơn giản;
text/vnd.sun.j2me.app-descriptor jad;
text/vnd.wap.wml wml;
văn bản/x-thành phần htc;
hình ảnh/png png;
hình ảnh/tiff tif tiff;
image/vnd.wap.wbmp wbmp;
hình ảnh/biểu tượng x ico;
hình ảnh/x-jng jng;
hình ảnh/x-ms-bmp bmp;
hình ảnh/svg+xml svg svgz;
hình ảnh/webp webp;
ứng dụng/phông chữ woff;
ứng dụng/java-archive jar chiến tai;
ứng dụng/json json;
ứng dụng/mac-binhex40 hqx;
tài liệu ứng dụng/msword;
ứng dụng/pdf pdf;
ứng dụng/tái bút ps eps ai;
ứng dụng/rtf rtf;
ứng dụng/vnd.apple.mpegurl m3u8;
ứng dụng/vnd.ms-excel xls;
ứng dụng/vnd.ms-fontobject eot;
application/vnd.ms-powerpoint ppt;
ứng dụng/vnd.wap.wmlc wmlc;
ứng dụng/vnd.google-earth.kml+xml kml;
ứng dụng/vnd.google-earth.kmz kmz;
ứng dụng/x-7z-nén 7z;
ứng dụng/x-ca cao cco;
ứng dụng/x-java-archive-diff jardiff;
ứng dụng/x-java-jnlp-tệp jnlp;
ứng dụng/x-makeself chạy;
ứng dụng/x-perl pl chiều;
ứng dụng/x-pilot prc pdb;
ứng dụng/x-rar-rar nén;
ứng dụng/x-redhat-gói-quản lý rpm;
ứng dụng/x-biển biển;
ứng dụng/x-shockwave-flash swf;
ứng dụng/x-stuffit ngồi;
ứng dụng/x-tcl tcl tk;
ứng dụng/x-x509-ca-cert der pem crt;
ứng dụng/x-xpinstall xpi;
ứng dụng/xhtml+xml xhtml;
ứng dụng/xspf+xml xspf;
ứng dụng/zip zip;
ứng dụng/octet-stream bin exe dll;
gỡ lỗi ứng dụng/octet-stream;
ứng dụng/octet-stream dmg;
ứng dụng/octet-stream iso img;
ứng dụng/octet-stream msi msp msm;
application/vnd.openxmlformats-officedocument.wordprocessingml.document docx;
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx;
application/vnd.openxmlformats-officedocument.presentationml.presentation pptx;
âm thanh/midi mid midi kar;
âm thanh/mpeg mp3;
âm thanh/ogg ogg;
âm thanh/x-m4a m4a;
âm thanh/x-realaudio ra;
video/3gpp 3gpp 3gp;
video/mp2t ts;
video/mp4 mp4;
video/mpeg mpeg mpg;
video/quicktime mov;
video/webm webm;
video/x-flv flv;
video/x-m4v m4v;
video/x-mng mng;
video/x-ms-asf asx asf;
video/x-ms-wmv wmv;
video/x-msvideo avi;
}
# tệp cấu hình /etc/nginx/sites-enabled/default:
#
#
# Cấu hình máy chủ mặc định
#
người phục vụ {
nghe 443 ssl http2 default_server;
lắng nghe [::]:443 ssl http2 default_server;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# bao gồm đoạn trích/tự ký.conf;
# bao gồm đoạn trích/ssl-params.conf;
# tên_máy chủ localhost;
tên_máy chủ xyz_server;
underscores_in_headers bật;
# Phụ trợ API REST
vị trí ^~ /api {
bật proxy_pass_request_headers;
proxy_http_version 1.1;
proxy_set_header Nâng cấp $http_upgrade;
add_header X-Abc-Login-Name $http_x_abc_login_name;
proxy_set_header Kết nối vẫn hoạt động;
proxy_set_header Máy chủ lưu trữ $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:8000;
}
# Giao diện người dùng
địa điểm / {
bật proxy_pass_request_headers;
proxy_http_version 1.1;
proxy_set_header Nâng cấp $http_upgrade;
add_header X-Abc-Login-Name $http_x_abc_login_name;
proxy_set_header Kết nối vẫn hoạt động;
proxy_set_header Máy chủ lưu trữ $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:3000;
}
gốc/var/www/html;
chỉ số index.php;
vị trí ~ \.php$ {
bao gồm đoạn trích/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
}
người phục vụ {
nghe 80; # máy chủ mặc định;
gốc/var/www/html;
chỉ mục index.php
tên_máy chủ php_server;
vị trí ~ \.php$ {
bao gồm đoạn trích/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
}
# tập tin cấu hình /etc/nginx/snippets/fastcgi-php.conf:
# regex để tách $uri thành $fastcgi_script_name và $fastcgi_path
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
# Kiểm tra xem tập lệnh PHP có tồn tại trước khi chuyển nó không
try_files $fastcgi_script_name =404;
# Bỏ qua thực tế là try_files đặt lại $fastcgi_path_info
# xem: http://trac.nginx.org/nginx/ticket/321
đặt $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
fastcgi_index index.php;
bao gồm fastcgi.conf;
# tập tin cấu hình /etc/nginx/fastcgi.conf:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
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 REQUEST_SCHEME $scheme;
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;
Chỉnh sửa 3:
Trái: Nhật ký ứng dụng, Phải: Nginx đang chạy: