वेबसर्वर बेतरतीब ढंग से विभिन्न vhosts कार्य करता है


9

हमें उबंटू ट्रस्टी पर चलने वाला नगेंक्स मिला है। यह कई वेबसाइटों पर कार्य करता है, जो एक आईपी पते पर चल रहे हैं।

बेतरतीब ढंग से, हालांकि यह काम के बोझ से थोड़ा संबंधित है, कभी-कभी एकल अनुरोध गलत vhost पर बदल जाते हैं। इसके lustrum.thalia.nuद्वारा अनुरोध किया जा रहा है thalia.nuऔर इसके विपरीत काम किया जा रहा है । यह तब गंदा त्रुटि पृष्ठ देता है क्योंकि उपयोगकर्ता अचानक एक अलग वेब साइट पर समाप्त हो जाते हैं। जब आप दबाते हैं F5, तो उपयोगकर्ता फिर से मूल लक्ष्य पर समाप्त हो जाते हैं।

यह ब्राउज़र या ऑपरेटिंग सिस्टम से संबंधित नहीं लगता है। यह फ़ायरफ़ॉक्स (लिनक्स, विंडोज, मैक), एज (विंडोज) और क्रोम (लिनक्स, विंडोज, एंड्रॉइड) और सफारी (आईओएस) पर होने की पुष्टि की गई है।

यह समस्या तब अधिक बार होती है जब सिस्टम को लोड के अंतर्गत रखा जाता है, जो किसी प्रकार की दौड़ स्थिति का सुझाव देता है।

lustrum.thalia.nu

server {
        server_name lustrum.thalia.nu;

        listen 443 ssl;

        ssl on;
        ssl_certificate /etc/nginx/certs/lustrum.thalia.nu.crt;
        ssl_certificate_key /etc/nginx/certs/lustrum.thalia.nu.key;

        add_header Strict-Transport-Security "max-age=63072000; preload";

        root /var/www/thalia-lustrum/public_html;

        location / {
                index index.php;
                try_files $uri $uri/ /index.php?$args;
        }

        # Add trailing slash to */wp-admin requests.
        rewrite /wp-admin$ $scheme://$host$uri/ permanent;

        # Pass all .php files onto a php-fpm/php-fcgi server.
        location ~ [^/]\.php(/|$) {
                include         /etc/nginx/fastcgi_params;

                fastcgi_split_path_info ^(.+?\.php)(/.*)$;

                if (!-f $document_root$fastcgi_script_name) {
                        return 404;
                }

                fastcgi_pass    unix:/var/run/php5-fpm-thalia-lustrum.sock;
                fastcgi_index   index.php;
                fastcgi_param   SCRIPT_FILENAME  /public_html$fastcgi_script_name;
        }
}

thalia.nu

server {
        server_name thalia.nu;    
        listen 443 ssl;

        ssl on;
        ssl_certificate /etc/nginx/certs/www.thalia.nu.crt;
        ssl_certificate_key /etc/nginx/certs/www.thalia.nu.key;

        add_header Strict-Transport-Security "max-age=63072000; preload";

        root /var/www/thalia/public_html;

        location / {
                try_files $uri $uri/ /index.php/$request_uri;
                index index.php index.html index.htm;
        }

        location ~ \.php($|/) {
                include         /etc/nginx/fastcgi_params;
                set  $script     $uri;
                set  $path_info  "";
                if ($uri ~ "^(.+\.php)(/.+)") {
                                set  $script     $1;
                                set  $path_info  $2;
                }
                fastcgi_read_timeout    120;
                fastcgi_pass    unix:/var/run/php5-fpm-thalia-www.sock;
                fastcgi_index   index.php;
                fastcgi_param   SCRIPT_FILENAME  /public_html$fastcgi_script_name;
        }
}

जैसा कि आप देख सकते हैं, हम इन दोनों डोमेन के लिए अलग-अलग PHP5-FPM पूल चला रहे हैं। इन पूलों को अलग-अलग फ़ोल्डरों में डाला जाता है और विभिन्न उपयोगकर्ताओं के रूप में चलाया जाता है। PHP-FPM का विन्यास अन्यथा काफी मानक है जहाँ तक मैं बता सकता हूँ।

हमने दोनों nginx 1.4.6-ubuntu3 और nginx 1.8.0-1 + भरोसेमंद कोशिश की है।

लॉग टेलीमेट्री

266.266.266.266 - - [25/Nov/2015:09:24:40 +0100] "GET /committees/175 HTTP/1.1" 302 5 "https://thalia.nu/committees" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:42.0) Gecko/20100101 Firefox/42.0" Host: "thalia.nu" Location: "https://thalia.nu/index.php//committees/wp-admin/setup-config.php"

इस पंक्ति में आप देख सकते हैं कि पृष्ठ के लिए अनुरोध /committeesअचानक अनुप्रेषित हो जाता है wp-admin। ऐसा प्रतीत होता है कि PHP-fpm पूल /committeesद्वारा संभाला गया अनुरोध thalia-lustrum...

DNS ज़ोन फ़ाइल

हम यह नहीं देखते हैं कि यह संभवतः प्रासंगिक कैसे हो सकता है, लेकिन ...

;; MX Records
thalia.nu.    300    IN    MX    20    relay.transip.nl.
thalia.nu.    300    IN    MX    10    ivo.thalia.nu.

;; TXT Records
thalia.nu.    300    IN    TXT    "v=spf1 a mx a:mulgore.hexon-is.nl a:moonray.hexon-is.nl a:fred.thalia.nu a:ivo.thalia.nu ~all"

;; SPF Records (Sender Policy Framework)
thalia.nu.    300    IN    SPF    "v=spf1 a mx a:mulgore.hexon-is.nl a:moonray.hexon-is.nl a:fred.thalia.nu a:ivo.thalia.nu ~all"

;; CNAME Records
lustrum.thalia.nu.    300    IN    CNAME    thalia.nu.

;; A Records (IPv4 addresses)
thalia.nu.    300    IN    A    131.174.31.8
www.thalia.nu.    300    IN    A    131.174.31.8
ivo.thalia.nu.    300    IN    A    131.174.31.8

1
प्लेट्स डोमेन के लिए अपनी DNS सेटिंग्स की जाँच करें।
डायमंड

1
@ कंगाल वे एक ए और एक CNAME रिकॉर्ड हैं, जो एक ही IP की ओर इशारा करते हैं। मैं यह नहीं देखता कि यह कैसे संबंधित है, हालांकि; ये ठीक हल करते हैं, और ऐसा नहीं लगता है कि DNS मुद्दा असंगत रूप से प्रकट होगा।
जोहोस

2
@ThomWiggers, क्या आप अपनी लॉग फ़ाइल में Host:http हेडर और उपयोगकर्ता एजेंट की सामग्री जोड़ सकते हैं ? यहाँ कैसे के लिए देखें: serverfault.com/questions/636790/... । वास्तव में मैंने आपकी वेबसाइटों के लिए कुछ अनुरोध करने की कोशिश की, लेकिन आपकी समस्या को हल नहीं किया। इसे पुन: पेश करने के लिए आप किस क्लाइंट का उपयोग कर रहे हैं?
फ्रेडी

3
क्या तथ्य यह है कि मुझे सिर्फ "थर्ड पार्टी कंटेंट इनस्टॉल नहीं" या कुछ और मिला है क्योंकि आप इस पर काम कर रहे हैं, या क्या मैं किसी अन्य PHP पूल या किसी चीज़ (उसी बग को ट्रिगर करता हुआ) पर समाप्त हुआ हूं? मुझे भी config.phpनहीं मिला के बारे में एक संक्षिप्त त्रुटि है।
हाफगैर

2
@kasperd serverfault.com/questions/737349/… । यह केवल PHP लिपियों को प्रभावित करता है।
थॉम्स विगर्स

जवाबों:


4

इस समस्या को डीबग करने के कुछ घंटों के बाद हम आखिरकार इसका कारण जानने में सफल रहे। ऐसा लगता है कि इसका कारण nginxPHP-fpm नहीं है। हम php5-fpmसंस्करण चला रहे हैं 5.5.9-1ubuntu4.14। ऐसा प्रतीत होता है कि नए श्रमिकों को मजबूर करते समय, कभी-कभी कुछ गलत हो जाता है और श्रमिक विभिन्न श्रमिकों के कोड को चलाते हैं (भाग?)।

हमारा समाधान /etc/php5/fpm/php5-fpm.confअपने स्वयं के pool.dफ़ोल्डरों के साथ अलग-अलग प्रतियों में कॉपी करना था , फिर /etc/init.d/php5-fpmनई कॉन्फिग फाइल (फाइल भी बनाना /etc/init/) के साथ लॉन्च करना था । इसका मतलब है कि अब हमारे पास php5-fpmप्रति पूल एक प्रक्रिया प्रबंधक है। अलग chroots और सॉकेट होने के लिए चीजों को अलग रखने के लिए प्रकट नहीं होते हैं।


ध्यान दें कि यह वर्तमान में अस्पष्ट है अगर यह हमारे कॉन्फ़िगरेशन में या (इस संस्करण में) php5-fpm का एक मुद्दा है, हालांकि बाद वाले को समान रिपोर्ट की कमी की संभावना नहीं लगती है। यदि हम इस समस्या के कारण का पता लगाते हैं, तो यह उत्तर अपडेट किया जाएगा।
जोस्ट

1

मैं एक ही मुद्दे का सामना कर रहा हूँ, लेकिन Apache2.4.25 और PHP7.1-FPM के साथ डेबियन पर। यहाँ प्रक्रियाओं को अलग करने का एक तरीका है https://ma.ttias.be/a-better-way-to-run-php-f5/।

मेरे जैसे उन लोगों के लिए जो छोटी वेबसाइटों के लिए इस समाधान को बहुत अधिक पा सकते हैं, php_admin_value[opcache.revalidate_freq] = 0php-fpm पूल कॉन्फ़िगरेशन फ़ाइल के अंत में जोड़ें । हालाँकि, प्रदर्शन पर इसका गंभीर प्रभाव पड़ सकता है ...

यहाँ आधिकारिक बग रिपोर्ट है: https://bugs.php.net/bug.php?id=67141


0

क्या Nginx SNI का समर्थन करता है? आप nginx -V चला सकते हैं और टीएलएस एसएनआई समर्थित सक्षम की तरह कुछ देखना चाहिए। यदि आप ऐसा नहीं करते हैं, तो ऐसा इसलिए हो सकता है क्योंकि होस्टनाम हैंडशेक के बाद भेजा गया है और मैं मान रहा हूं कि आपके पास * .thalia.nu के लिए एक वाइल्ड सर्टिफिकेट प्रमाणपत्र है।


बेशक, यह एसएनआई के बिना, यह कभी-कभार होने के बजाय 100% समय गलत होगा। (और मैंने यह भी जांचा है, यह निश्चित रूप से सक्षम है)
थॉम विगर्स 11

FWIW, ध्यान दें कि हम वाइल्डकार्ड प्रमाणपत्र की सेवा नहीं करते हैं, लेकिन अलग-अलग उप-डोमेन के लिए व्यक्तिगत प्रमाण पत्र का उपयोग करते हैं। यह प्रश्न में सूचीबद्ध कॉन्फ़िगरेशन में शामिल है।
जोस्ट

..हालांकि lustrum.thalia.nu सर्टिफिकेट भी थालिया.नु के लिए मान्य है
Thom Wiggers

क्या आप इस तरह शामिल करने के पैरामीटर को जोड़ने की कोशिश कर सकते हैं? add_header स्ट्रिक्ट-ट्रांसपोर्ट-सिक्योरिटी "मैक्सिमम-आयु = 63072000; समसुमडेन; प्रीलोड";
मुगुरेल

@ThomWiggers यदि प्रमाणपत्र कई डोमेन के लिए मान्य है, तो SNI की आवश्यकता के बिना एक ही IP पर कई डोमेन का समर्थन करना संभव है।
कास्परड

-1

ऐसा लगता है कि प्रमाण पत्र सही नहीं है: फ़ायरफ़ॉक्स मुझे बता रहा है कि यह www.thalia.nu के लिए जारी किया गया है, न कि थालिया.नु।

यह IMHO है जो परेशानी पैदा कर रहा है। एक और प्रमाण पत्र के साथ प्रयास करें या एसएसएल के बिना HTTP कनेक्शन को सक्रिय करने का प्रयास करें।


हम ऐसा नहीं कर सकते। प्रमाण पत्र में परोसा www.thalia.nuऔर thalia.nuके साथ या बिना दोनों डोमेन में शामिल हैं, www। आप किस फ़ायरफ़ॉक्स संस्करण का उपयोग कर रहे हैं, और किस प्लेटफ़ॉर्म पर?
19ost को जोस्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.