এনগিনেক্স, এক্স-অ্যাক্সেল-পুনর্নির্দেশ এবং মাইম প্রকারগুলি


9

আমার এনগিনেক্স ০.৮.৩৪ সেটআপে আমি অ্যাপ্লিকেশনটিতে ডাউনলোডটি নিজেই হ্যান্ডেল না করে অ্যাপ্লিকেশন কোডটিতে ফাইল ডাউনলোডগুলি নিয়ন্ত্রণ করতে এক্স-অ্যাক্সেল-পুনর্নির্দেশ বৈশিষ্ট্যটি ব্যবহার করছি।

অনেক ব্যথার পরে এটি এখন মূলত nginx ব্যতীত কাজ করে তবে সর্বদা text/htmlসামগ্রী প্রকারের সাথে ফাইলটি ফেরত দেয় ।

ডিফল্ট সামগ্রীর প্রকারটি হ'ল অ্যাপ্লিকেশন / অক্টেট-স্ট্রিম, httpব্লকটিতে নির্দিষ্ট ।

সার্ভার ব্লকটিতে অন্যান্য জিনিসগুলির মধ্যে ফাইলটি যেখানে সংরক্ষণ করা হয় সেই ডিরেক্টরিটির সংজ্ঞা রয়েছে:

location /files {
  default_type  application/octet-stream;
  alias /srv/www/uploads;
  internal;  
}

সুতরাং আমি এখানে লিখিত বিষয়বস্তু নির্দিষ্ট করেছি কিন্তু কিছুই পরিবর্তন হয়নি।

আমি অ্যাপ্লিকেশন দ্বারা বিষয়বস্তু-টাইপ সেট করতে চাই না কারণ তখন আমি আমাকে ধীর করে দেব (আমাকে প্রথমে এটি নির্ধারণ করতে হবে)। সুতরাং আদর্শভাবে এনগিনেক্স ফাইল এক্সটেনশনের উপর ভিত্তি করে সঠিক মাইমটাইপটি ফিরিয়ে আনবে (আমি httpব্লকের মধ্যে মাইম.টাইপস অন্তর্ভুক্ত করি না )।

উত্তর:


12

আপনি যদি এনগিনেক্সকে সঠিক মাইম প্রকারটি অনুমান করতে চান তবে আপনাকে অবশ্যই নিশ্চিত করতে হবে যে আপনার ব্যাকএন্ড সার্ভার থেকে কোনও সামগ্রী-প্রকার ফিরে আসে না।

With django:
    response = HttpResponse()
    response['Content-Type'] = ''
    response['X-Accel-Redirect'] ='/my/file.jpg'
    return response

1
টর্নেডো সহ: টর্নেডো.ওয়েব.আরকুয়েস্টহ্যান্ডলর.ক্লিয়ার (স্ব) স্ব.সেট_হেডার ('এক্স-অ্যাক্সেল-পুনর্নির্দেশ', পুনর্নির্দেশ_পরিচালনা) সেলফার্কায়ার_হেডার ('বিষয়বস্তুর ধরণ') হিসাবে ক্লিয়ার পদ্ধতিটি পাঠ্য / এইচটিএমএল-তে সামগ্রী-প্রকার সেট করে
অ্যান্টনি

1

আমি ব্যক্তিগতভাবে শুধু আবেদন অ্যাপ্লিকেশন / অক্টেট-স্ট্রীম সেট কিন্তু আপনি পারে ব্যবহার করতে সক্ষম হতে fastcgi_ignore_headers ব্যাক এন্ড সরবরাহকৃত হেডার ব্যবহার থেকে nginx প্রতিরোধ।

fastcgi_ignore_headers Content-Type;

আপনার উত্তর করার জন্য আপনাকে ধন্যবাদ। আমি বিভিন্ন সামগ্রীর ধরণের সার্ভার করতে চাই যাতে চিত্রগুলি চিত্র হিসাবে রেন্ডার হয় এবং জিপ ফাইলগুলি ডাউনলোড বিকল্প হিসাবে প্রস্তাবিত হয়। সুতরাং দুর্ভাগ্যক্রমে এটি বেশ সমাধান করে না।
টমাস কোহল

আপনি এটি চেষ্টা করেছেন বা আপনি ধরে নিচ্ছেন এটি কার্যকর হবে না? ব্যাক-এন্ড সরবরাহ করা শিরকটি উপেক্ষা করে ফাইলের ভিত্তিতে এটি নির্ধারণের চেষ্টা করা উচিত।
মার্টিন Fjordvald

2
কেউ এড়িয়ে যেতে পারে না Content-Type। মতে wiki.nginx.org/HttpFcgiModule#fastcgi_ignore_headers সম্ভাব্য মান হয় X-Accel-Redirect, X-Accel-Expires, ExpiresবাCache-Control
jnns

1
"শিরোনামের" যেমন শিরোনাম নির্দিষ্ট করা সম্ভব যখন শিট্টি ফ্রেসিংয়ের অর্থ "সম্ভাব্য মানগুলি হয় না" does আমি এক্স-অ্যাক্সেল-পুনর্নির্দেশের সাথে মিশ্রণের আগে কন্টেন্ট-টাইপটিকে এড়িয়ে গিয়েছি তাই এটি অসম্ভব বলে মনে করি না, তবে, আমি স্বীকার করব আমি কৌতুকপূর্ণ বিবরণের সাথে নিবিড় নই।
মার্টিন Fjordvald

@ মার্টিনএফজর্ডওয়াল্ড, চেষ্টা করে দেখলেন এবং এনজিএনএক্স অভিযোগ শুরু করতে অস্বীকৃতি nginx: [warn] invalid value "Content-Type" in /etc/nginx/conf.d/default.conf:27জানালেও fastcgi_ignore_headers "Expires"কাজ করছে
ডনোজে

0

পিএইচপি-এফপিএম সহ:

<?php
    header("Content-Type: ");
    header("X-accel-redirect: (...)");

পিএইচপি কে কন্টেন্ট-টাইপ শিরোনামটি মোটেও না পাঠাতে বলে (খালিটিও নয়), এবং এনজিনেক্স আপনার জন্য টাইপটি অনুমান করে শিরোনাম যুক্ত করবে :)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.