vì vậy tôi chạy một ứng dụng Laravel trong bộ chứa nginx mà tôi cấp quyền truy cập thông qua một nginx khác hoạt động như một proxy ngược. Vùng chứa hiển thị cổng 8123/tcp để truy cập dịch vụ. Vấn đề là vì một lý do nào đó nginx thêm một cổng vào địa chỉ tại một số điểm, vì vậy giả sử tôi truy cập https://app.example.com
, sau đó vùng chứa chuyển hướng đến http://app.example.com/docs
và sau đó chuyển hướng đến http://app.example.com:8123/docs/
.
Đây là cấu hình tôi sử dụng cho proxy ngược:
người phục vụ {
nghe 443 ssl http2;
nghe [::]:443 ssl http2;
server_name app.example.com;
access_log /var/log/nginx/app.example.com-access.log;
error_log /var/log/nginx/app.example.com-errors.log;
add_header Chính sách giới thiệu cùng nguồn gốc;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Frame-Options "SAMEORIGIN";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
địa điểm / {
proxy_redirect tắt;
port_in_redirect tắt;
proxy_pass http://127.0.0.1:8123;
proxy_http_version 1.1;
proxy_set_header Máy chủ $http_host;
proxy_set_header Vị trí $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
}
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_dhparam /etc/letsencrypt/dhparams_4096.pem;
}
người phục vụ {
nghe 80;
nghe [::]:80;
server_name app.example.com;
trả về 302 https://app.example.com$request_uri;
}
Cái này dành cho container có nginx bên trong:
worker_processes 1;
error_log stderr gỡ lỗi;
pid /run/nginx.pid;
dữ liệu www của người dùng; #user phải giống với người đang chạy php
sự kiện {
công_nhân kết_nối 1024 ;
}
http {
bao gồm mime.types;
ứng dụng default_type/octet-stream;
gửi tệp trên;
bật tcp_nopus;
bật tcp_nodelay;
bật fastcgi_keep_conn;
bật fastcgi_buffering;
fastcgi_buffer_size 512k;
fastcgi_buffers 128 256k;
# Điều chỉnh các thủ tục nginx để hoạt động với Trình cân bằng tải GCP HTTP(S):
keepalive_timeout 65;
# Xác định định dạng nhật ký tùy chỉnh để bao gồm thời gian phản hồi
log_format main_timed '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" '
'$request_time $upstream_response_time $pipe $upstream_cache_status';
truy cập_log /dev/stdout main_timed;
error_log /dev/stderr gỡ lỗi;
# Ghi các tệp tạm thời vào /tmp để chúng có thể được tạo với tư cách người dùng không có đặc quyền
client_body_temp_path /tmp/client_temp;
proxy_temp_path /tmp/proxy_temp_path;
fastcgi_temp_path /tmp/fastcgi_temp;
uwsgi_temp_path /tmp/uwsgi_temp;
scgi_temp_path /tmp/scgi_temp;
# Định nghĩa máy chủ mặc định
người phục vụ {
nghe 8123 ;
tên máy chủ _;
truy cập_log /dev/stdout main_timed;
error_log /dev/stderr gỡ lỗi;
chỉ mục index.php index.html;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
# Được xác định trong Cloud run
client_max_body_size 300M;
gốc/var/www/ứng dụng/công khai;
vị trí / { try_files $uri $uri/ try_files $uri $uri/ /index.php$is_args$args; }
vị trí ~ .php$ {
bao gồm /etc/nginx/fastcgi_params;
fastcgi_pass unix:/tmp/php-fpm.sock;
fastcgi_index index.php;
fastcgi_read_timeout 300;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
vị trí ~ /\. {
Phủ nhận tất cả;
}
vị trí = /favicon.ico {
truy cập_đăng xuất;
log_not_found tắt;
}
vị trí ~* \.(woff|woff2|svg|jpg|jpeg|png|gif|ico)$ {
hết hạn 1 ngày;
}
vị trí ~* \.(js|css)$ {
hết hạn 20m;
}
vị trí ^~ /storage/app/docs {
Phủ nhận tất cả;
}
# Cho phép ping fpm và trạng thái từ localhost
# vị trí ~ ^/(fpm-status|fpm-ping)$ {
# truy cập_đăng xuất;
# cho phép 127.0.0.1;
# Phủ nhận tất cả;
# #chấp nhận tất cả;
# fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# bao gồm fastcgi_params;
# fastcgi_pass unix:/tmp/php-fpm.sock;
# }
}
bật gzip;
gzip_proxied bất kỳ;
văn bản gzip_types/ứng dụng thuần túy/văn bản xml/văn bản css/văn bản js/ứng dụng xml/văn bản x-javascript/ứng dụng javascript/ứng dụng json/xml+rss;
bật gzip_vary;
gzip_disable "msie6";
# Bao gồm các cấu hình máy chủ khác
bao gồm /etc/nginx/conf.d/*.conf;
CHỈNH SỬA 1:
Tôi đã không nhận thấy rằng tôi đang bao gồm các tệp cấu hình khác, vì vậy đây là:
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 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;
/etc/nginx/conf.d
tệp này rỗng.
Tôi làm gì sai?