Điểm:0

Định cấu hình NGINX với proxy_pass được thiết lập trên thư mục con trỏ đến máy chủ docker và đảm bảo phân giải các URL tương đối (.js, .css)

lá cờ ky

tôi có nginx 1.14.0 chạy trên máy chủ Ubuntu 18.04. Trên máy chủ đó, tôi đang cố tự lưu trữ nhiều ứng dụng khác nhau. Mục tiêu của tôi là để mỗi vị trí tồn tại trong thư mục con của url của tôi, server.calebjay.com.

Ví dụ, ngay bây giờ tôi muốn thiết lập phòng trưng bày heo2 có sẵn tại server.calebjay.com/photos. Để làm như vậy, tôi có một phiên bản docker phục vụ trên cổng 800 và tôi có nginx ủy quyền cho nó. Điều này một phần hoạt động, insomuch as index.html tải.

Tuy nhiên, các url tương đối, chẳng hạn như tập lệnh src, không giải quyết được, tôi tin bởi vì chúng được hình thành giống như chính.js thay vì /photos/main.js.

Để kiểm tra, tôi có thể ĐƯỢC https://server.calebjay.com/photos, và giải quyết một index.html. Tôi nhận được lỗi 404 cho rất nhiều tệp .js và .css. Xác nhận, nếu tôi lấy các URL tương đối đó và thực hiện https://server.calebjay.com/photos/main-asdfasdf.js, tôi vẫn nhận được lỗi 404, {server-ip-address}/photos/main-asdf.jshttps://server.calebjay.com/photos/main-asdf.js cả hai đều trả về đúng tệp JS đã cho.

Có nhiều câu trả lời liên quan đến điều này, tuy nhiên không có câu trả lời nào phù hợp với tôi.

Cấu hình nginx cơ bản của tôi:

/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 ;
}

http {
        gửi tệp trên;
        bật tcp_nopus;
        bật tcp_nodelay;
        keepalive_timeout 65;
        loại_hash_max_size 2048;

        bao gồm /etc/nginx/mime.types;
        ứng dụng default_type/octet-stream;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Bỏ SSLv3, tham khảo: POODLE
        bật ssl_prefer_server_ciphers;

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        bật gzip;

        bao gồm /etc/nginx/conf.d/*.conf;
        bao gồm /etc/nginx/sites-enabled/*;
}

Đối với tên miền phụ và máy chủ docker duy nhất mà tôi hiện đang ủy quyền:

/etc/nginx/sites-available/server.calebjay.com.conf

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

        server_name server.calebjay.com www.server.calebjay.com;
        trả về 301 https://$server_name$request_uri;
  }

  người phục vụ {
    server_name server.calebjay.com; 

    bật gzip;


#vị trí ~ \.css {
# add_header Văn bản kiểu nội dung/css;
#}
#location ~ \.js {
# add_header Ứng dụng kiểu nội dung/x-javascript;
#}

#địa điểm / {
 # if ($http_referer ~ "^https?://[^/]+/photos/") {
 # viết lại ^/(.*) https://$http_host/photos/$1 chuyển hướng;
 # }
# if ($http_referer = "https://server.calebjay.com/photos/") {
# viết lại ^/(.*) https://server.calebjay.com/photos/$1 chuyển hướng;
# }
#}

   địa điểm /ảnh/ {
    # viết lại ^/photos(/.*)$ $1 break;
      proxy_pass http://localhost:800/;
      proxy_http_version 1.1;
      proxy_set_header Nâng cấp $http_upgrade;
      'nâng cấp' kết nối proxy_set_header;
     # sub_filter "<head>" "<head><base href=\"${scheme}://${host}/photos\">";
      proxy_set_header Máy chủ lưu trữ $host;
      proxy_cache_bypass $http_upgrade;
    }


    nghe 443 ssl default_server;
    lắng nghe [::]:443 ssl default_server;

    ssl_certificate /etc/letsencrypt/live/server.calebjay.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/server.calebjay.com/privkey.pem;
    bao gồm /etc/letsencrypt/options-ssl-nginx.conf;
  }

Mỗi phần được nhận xét là các thử nghiệm riêng biệt mà tôi đã thử từ nhiều nơi khác nhau trên mạng ngăn xếp:

Không viết lại dựa trên liên kết giới thiệu http đã hoạt động, mặc dù kết quả là một hình ảnh đã được giải quyết.

Có quy tắc rõ ràng cho hình ảnh cũng không thêm tiêu đề kiểu mime đã làm việc.

Câu trả lời liên quan đến nội dung tĩnh và try_files không hoạt động, tôi cũng không nên tin, vì tôi đang ủy quyền cho một máy chủ.

Thay thế liên kết bằng sub_filter không hoạt động.

Cài đặt địa điểm như /ảnh thay vì /ảnh/ không hoạt động.

Tôi không có quyền truy cập vào phần bên trong docker, vì vậy không thể sửa đổi html trực tiếp.

Làm thế nào tôi có thể nhận được của tôi href để giải quyết đối với tên miền thích hợp, với thư mục con của /ảnh/?

(Tôi đã khởi động lại nginx sau mỗi lần thay đổi cấu hình)

Biết thêm chi tiết:

nginx -V

phiên bản nginx: nginx/1.14.0 (Ubuntu)
được xây dựng với OpenSSL 1.1.1 11 Tháng chín 2018
Đã bật hỗ trợ TLS SNI
định cấu hình đối số: --with-cc-opt='-g -O2 -fdebug-prefix-map=/build/nginx-H4cN7P/nginx-1.14.0=.-fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl ,-z,now -fPIC' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path= /usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http- proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with -threads --with-http_addition_module --with-http_geoip_module=dynamic --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_fi lter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module

CHỈNH SỬA: À, có vẻ như http_referer viết lại giải pháp hoạt động trong việc tải js, css, v.v., nhưng sau đó ứng dụng JS thay đổi URL máy khách ở phía máy khách mà không đưa ra yêu cầu, thành máy chủ.calebjay.com/, do đó làm cho trình duyệt của tôi hiển thị server.calebjay.com/login, do đó khiến các yêu cầu trong tương lai bỏ lỡ http_referer. Có thể không khắc phục được điều này vì tôi không biết cách nào để buộc javascript viết lại URL dựa trên thư mục con. Tôi có thể bị buộc phải có tất cả các ứng dụng của mình trên các tên miền phụ riêng biệt, trừ khi ứng dụng đã cho xảy ra để có cấu hình thư mục con.

Điểm:0
lá cờ us

Bạn cần định cấu hình đúng URL cơ sở của ứng dụng để ứng dụng tạo các URL thích hợp phù hợp với thiết lập của bạn.

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