2010-08-08 8 views
10

मैंने अभी एक साइट पर स्थिर अनुरोध करने के लिए nginx सेट अप किया है, लेकिन मेरे पास मेरे सर्वर पर बहुत सी साइटें हैं और मुझे आश्चर्य है, क्या मुझे सही नया होना चाहिए उन सभी के लिए nginx सर्वर विन्यास? अब मैं क्या कर रहा हूं।सही तरीके से सभी वर्चुअल होस्टों को सेवा देने के लिए nginx के लिए अपाचे और परम कॉन्फ़िगरेशन

NameVirtualHost *:8080 
<VirtualHost *:8080> 
ServerName sky2high.net 
DocumentRoot /home/mainsiter/data/www/sky2high.net 
</VirtualHost> 

<VirtualHost *:8080> 
ServerName surdo.asmon.ru 
DocumentRoot /home/surdo/data/www/surdo.asmon.ru 
</VirtualHost> 

<VirtualHost *:8080> 
ServerName surdoserver.ru 
DocumentRoot /home/surdo/data/www/surdoserver.ru 
</VirtualHost> 

मैं अपाचे के ports.conf में इस राशि:

Listen 8080 

और इसलिए मैं काम करने के लिए nginx सेट अप किया है मैं इस तरह कुछ-बात के साथ अपाचे के लिए सभी आभासी मेजबान प्रविष्टियों के साथ फ़ाइल है एक साइट (sky2high.net), बनाया अगले कॉन्फ़िगर फ़ाइल (/etc/nginx/sites-enabled/sky2high.net) के साथ:

server { 
listen 80; 
server_name sky2high.net www.sky2high.net; 
    proxy_pass http://127.0.0.1:8000; 
    proxy_set_header Host $host; 

access_log /var/log/nginx.access_log; 

location ~* \.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx)$ { 
    root /home/mainsiter/data/www/sky2high.net/; 
    index index.php; 
    access_log off; 
    expires 30d; 
} 
location ~ /\.ht { 
    deny all; 
} 
location/{ 
    proxy_pass http://127.0.0.1:8080/; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-for $remote_addr; 
    proxy_set_header Host $host; 
    proxy_connect_timeout 60; 
    proxy_send_timeout 90; 
    proxy_read_timeout 90; 
    proxy_redirect off; 
    proxy_set_header Connection close; 
    proxy_pass_header Content-Type; 
    proxy_pass_header Content-Disposition; 
    proxy_pass_header Content-Length; 
} 
} 

और यह इस डोमेन के लिए ठीक काम करता है, लेकिन निश्चित रूप से एक और आभासी मेजबान हैं टूटा हुआ।

तो सवाल यह है: क्या nginx के लिए अंतिम कॉन्फ़िगरेशन विकल्प है, चुड़ैल सभी आभासी मेजबान (डोमेन) से सभी अनुरोधों को संभालने में मदद कर सकता है और उन्हें सही तरीके से सेवा दे सकता है? मेरा मतलब है, विकल्प जो प्रत्येक वर्चुअल होस्ट (रूट और इंडेक्स विकल्पों जैसे सभी दोगुनी चीजों के साथ) के लिए separete कॉन्फ़िगरेशन फ़ाइलों को लिखने की अनुमति नहीं देता है, लेकिन सभी वर्चुअल होस्ट्स के लिए केवल एक ही है?

पीएस: क्या मुझे सर्वरफॉल्ट पर सवाल उठाना चाहिए?

अद्यतन: एएमएम .. मुझे आश्चर्य है कि यह कैसे काम करता है, लेकिन यह है। मैं अगले config फ़ाइलों कर दिया है:

/etc/nginx/nginx.conf

user www-data; 
worker_processes 2; 

error_log /var/log/nginx/error.log; 
pid  /var/run/nginx.pid; 

events { 
    worker_connections 1024; 
} 

http { 
    include  /etc/nginx/mime.types; 
    default_type application/octet-stream; 

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

    sendfile  on; 
    #tcp_nopush  on; 

    #keepalive_timeout 0; 
    keepalive_timeout 65; 
    tcp_nodelay  on; 

    gzip    on; 
    gzip_min_length 1000; 
    gzip_proxied  any; 
    gzip_disable  "msie6"; 

    include /etc/nginx/conf.d/*.conf; 
    include /etc/nginx/sites-enabled/*; 
} 

और

/etc/nginx/साइटों सक्षम/डिफ़ॉल्ट

server { 
    listen 80; 

    location/{ 
     proxy_pass http://127.0.0.1:8080/; 
     proxy_redirect off; 
     proxy_set_header Host $host; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Connection close; 
     proxy_pass_header Content-Type; 
     proxy_pass_header Content-Disposition; 
     proxy_pass_header Content-Length; 
    } 
} 

मैं यह समझ में नहीं आता कि यह कैसे काम करता है, लेकिन यह है ...

अद्यतन 2: या यह काम नहीं करता है! मैंने कंसोल में "टॉप" देखा है और यह पाया है कि अपाचे केवल php अनुरोध नहीं करता है, लेकिन स्थिर सामग्री के लिए = (

उत्तर

7

अब आप क्या करते हैं 127.0.0.1:8080 पर सभी नेटवर्क ट्रैफ़िक Nginx को अनुमति दिए बिना स्टैटिक फ़ाइलें सेवा करने के लिए

क्या आप की कोशिश करनी चाहिए निम्नलिखित है:।

server { 
listen 80; 
server_name sky2high.net www.sky2high.net; 
location/{ 
proxy_pass http://127.0.0.1:8080; 
include /etc/nginx/conf.d/proxy.conf; 
} 
location ~* ^.+\.(jpg|jpeg|gif|png|ico|tgz|gz|pdf|rar|bz2|exe|ppt|txt|tar|mid|midi|wav|bmp|rtf) { 
root /folder/to/static/files; 
expires 90d; 
} 
location ~* ^.+\.(css|js)$ { 
root /folder/to/static/files; 
expires 30d; 
} 

और proxy.conf में आप निम्नलिखित डाल:

proxy_redirect off; 
proxy_set_header Host $host; 
proxy_set_header X-Real-IP $remote_addr; 
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
client_max_body_size 8m; 
client_body_buffer_size 256k; 
proxy_connect_timeout 60; 
proxy_send_timeout 60; 
proxy_read_timeout 60; 
proxy_buffer_size 4k; 
proxy_buffers 32 256k; 
proxy_busy_buffers_size 512k; 
proxy_temp_file_write_size 256k; 

यह shoul आपके लिए काम

+1

आप को बदलने के लिए चाहते हो सकता है एक लाइन के लिए: proxy_set_header होस्ट $ मेजबान: $ proxy_port; – dalore

2

बस मेरे दो सेंट, ज्यादातर मामलों में listen 80 निर्दिष्ट करना आवश्यक नहीं है।

स्रोत: Nginx common Pitfalls

संबंधित मुद्दे