এনজিঞ্জ ব্যবহার করার সময় আপনি কোন সেরা অনুশীলনগুলি ব্যবহার করেন?
এনজিঞ্জ ব্যবহার করার সময় আপনি কোন সেরা অনুশীলনগুলি ব্যবহার করেন?
উত্তর:
কীভাবে এইচটিটিপি এবং এইচটিটিপিএস ব্লক একত্রিত করবেন।
server {
listen 80;
listen 443 default ssl;
# other directives
}
এটি অন্য প্রশ্নের উত্তর হিসাবে পোস্ট করা হয়েছিল। এখানে দেখুন ।
এখন অবধি, আমি এর আগে দেখা সেরা টিপস হ'ল এটির ক্ষতিগ্রস্থ পৃষ্ঠাটির লেখক হ'ল: https://www.nginx.com/res स्त्रोत / উইকি / স্টার্ট / টপিক্স / টিউটোরিয়ালস / কনফিগ_পিটফলস /
সাধারণত, "যদি" ব্যবহার করা একটি খারাপ অভ্যাস (এনজিনেক্সের লেখকের মতে)। যদি সম্ভব হয় তবে এর পরিবর্তে "যদি (-f ...)" ত্রুটি_পৃষ্ঠা নির্দেশাবলীর চেষ্টা_ ফাইল ব্যবহার করা ভাল better
Maintenence.html ফাইলের সাথে টিপের সংমিশ্রণ এবং ট্রাই_ফায়ালগুলি সহ আমরা পাই:
অবস্থান / try_files /mainmain.html tenance uri $ uri / @wordpress; }
রক্ষণাবেক্ষণ শেষ হলে, মূল থেকে from মূল থেকে রক্ষণাবেক্ষণ html ml
if (-f ...) { return 503; }
এবং এর সাথে error_page 503 /maintenance.html
। আপনি কি মনে করেন?
শক্তিশালী এসএসএল সিফারগুলি ব্যবহার করতে এনজিনেক্স কনফিগার করুন। ডিফল্টরূপে, SSLv2 সক্ষম হয় (যা সম্ভব হলে আপনার অক্ষম করা উচিত)।
ssl_ciphers DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:EDH-RSA-DES-CBC3-SHA:AES256-SHA:DES-CBC3-SHA:AES128-SHA:RC4-SHA:RC4-MD5;
http://tumblelog.jauderho.com/post/121851623/nginx-and-stronger-ssl
map
সাবডোমেনগুলির সাথে মিলে যাওয়ার জন্য রুটটি স্যুইচ করার সময় নিয়মিত এক্সপ্রেশনগুলির জায়গায় নির্দেশিকাটি ব্যবহার করতে এটি প্রায়শই দক্ষ efficient
server {
server_name mysite.tld ~^.+\.mysite\.tld$;
map $host $files {
default common;
mysite.tld common;
www.mysite.tld common;
admin.mysite.tld admin;
system.mysite.tld system;
*.mysite.tld users;
}
root /var/www/mysite/$files;
}
empty_gif
মডিউল হয় খুব দরকারী, বিশেষ করে যদি আপনি (nagios / monit / ইত্যাদি ব্যবহার করে) ওয়েবসার্ভার থেকে মনিটর প্রতিক্রিয়া প্রয়োজন:
location /token {
empty_gif;
}
location /favicon.ico {
empty_gif;
}
location /img/1px.gif {
empty_gif;
}
access_log off;
সেইসব অবস্থানের জন্য সাধারণ অভ্যাস
আমরা শেফের সাথে এনগিনেক্স সেটআপ করেছি, এই কুকবুকটি ব্যবহার করে যেখানে ডিবিয়ান কীভাবে অ্যাপাচি 2 করে তার অনুরূপ এনজিনেক্স কনফিগারেশন পরিচালনা করার জন্য স্ক্রিপ্ট এবং বুদ্ধিমান ডিফল্ট সহ কিছু নমুনা টেম্পলেট রয়েছে।
রক্ষণাবেক্ষণ পৃষ্ঠাটি ফেরত দেওয়ার জন্য এখানে একটি ভাল পদ্ধতি। সমস্ত অনুরোধগুলি পুনরায় লেখা হয় এবং সঠিক http কোডটি ফিরে আসে। (503 - পরিষেবা অনুপলব্ধ)
error_page 503 /maintenance.html;
location /
{
if (-f $document_root/maintenance.html)
{
return 503;
}
try_files $uri /index.php?$args;
}
location = /maintenance.html
{
rewrite ^ /maintenance.html break;
}
if
আপনি যদি সঠিকভাবে এটি ব্যবহার করেন তবে কোনও বিবৃতিতে কোনও দোষ নেই - ডক্স বলে যে if
আপনি নিরাপদ থাকলে শুধু করছি return xxx;
।
location = /maintenance.html { break; }
প্রয়োজনীয়?
Nginx 0.7.12 এবং তার পরে, "হোস্ট" শিরোনাম ছাড়াই অনুরোধগুলি ধরার জন্য সার্ভার_নামে একটি "" ব্যবহারযোগ্য।
অপরিজ্ঞাত ভার্চুয়াল হোস্টগুলির জন্য আপনি নিম্নলিখিতটি ক্যাচল হিসাবে ব্যবহার করতে পারেন।
server {
server_name _ "";
}
কিছুক্ষণ আগে আমি কীভাবে এনজিএনক্সের সাথে জিপিপ কম্প্রেশন সঠিকভাবে পরিচালনা করতে পারি সেহেতু পুরানো ব্রাউজারগুলিতে কেবল একটি কম্বল জিজিপ বিবৃতিতে সমস্যা থাকতে পারে। আছে HTH।
http://tumblelog.jauderho.com/post/27655495/gzip-compression-with-nginx
আমি জানি না এটি একটি সেরা অনুশীলন কিনা, তবে অবশ্যই এনজিএনএক্সে নেস্টেড শর্তগুলি পেতে একটি ঝরঝরে হ্যাক। এনগিনেক্স উইকির একটি নমুনা এখানে ।
location /xxxx/ {
set $test "";
if ($request_method = POST) {
set $test P;
}
if ($http_cookie ~* "CCCC=.+(?:;|$)" ) {
set $test "${test}C";
}
if ($test = PC) {
#rewrite rule goes here.
}
}
একই সার্ভার ব্লক দ্বারা পরিচালিত সাবডোমেনগুলির জন্য যদি আপনাকে HTTP এবং https এর মধ্যে প্রাসঙ্গিকভাবে ফ্লিপ করতে হয় তবে আপনি এটি করতে ভেরিয়েবল ব্যবহার করতে পারেন। জিনিসগুলি করার সবচেয়ে কার্যকর উপায় নাও হতে পারে তবে এটি কাজ করে:
server {
server mysite.tld ~^.+\.mysite\.tld$;
set $req_ssl = 0;
map $host $files {
default common;
mysite.tld common;
www.mysite.tld common;
admin.mysite.tld admin;
system.mysite.tld system;
*.mysite.tld users;
}
root /var/www/mysite/$files;
if ( $files = "admin" ){
set $req_ssl 1;
}
if ( $files = "common" ){
set $req_ssl 2;
}
if ( $scheme = http )
{
set $req_ssl $req_ssl.1;
}
if ( $scheme = https )
{
set $req_ssl $req_ssl.2;
}
if ($req_ssl = 1.1){
rewrite ^ https://$host$uri;
}
if ($req_ssl = 2.2){
rewrite ^ http://$host$uri;
}
}
আমি সর্বদা root
সার্ভার ব্লকের শীর্ষে নির্দেশটি ব্যবহার করার চেষ্টা করি যাতে আমি $document_root
ভেরিয়েবলটির সুবিধা নিতে পারি এবং কখনই না, তবে কোনও root
অবস্থানের ব্লকের ভিতরে থাকা নির্দেশকে অন্তর্ভুক্ত করতে পারি না ।
Pitfalls পৃষ্ঠা nginx উইকি থেকে সর্বোত্তম অনুশীলন সম্পর্কে কিছু মহান টিপস আছে।
আপনি যদি প্রক্সি হিসাবে এনজিনেক্স ব্যবহার করছেন, টাইমআউট সেটিংস সামঞ্জস্য করা আপনার অ্যাপ্লিকেশনটি সম্পন্ন করার আগে আপনার এনজিঙ্কস ড্রপ সংযোগ না রাখার বিষয়টি নিশ্চিত হওয়া গুরুত্বপূর্ণ, বিশেষত যদি আপনি কোনও উচ্চ ট্র্যাফিক অ্যাপ্লিকেশন নিয়ে কাজ করছেন:
proxy_connect_timeout
proxy_send_timeout
আপনি কি এখানে একবার দেখেছেন?