nginx, php-fpm on diff सर्वर खराब गेटवे (और सुरक्षा भी)


0

यह कुछ हद तक एक बहुविकल्पीय प्रश्न है।

सबसे पहले और सबसे पहले, मेरे पास 502 खराब गेटवे हैं, लेकिन मुझे यकीन है कि सिर्फ इसलिए कि इनमें से एक लाइन मेरे पास गलत है।

दूसरा, मुझे यह जानकर अच्छा लगेगा कि मैंने 'सुरक्षा वार' कैसे किया। मैं समझता हूं कि कई मार्गदर्शक भयानक सलाह देते हैं। मैंने उन सभी से सभी ज्ञान को समझदारी से इकट्ठा करने की कोशिश की है, लेकिन मैं बहुत नया हूं इसलिए मुझे कुछ याद हो सकता है। सुरक्षा वास्तव में मेरे लिए महत्वपूर्ण है इसलिए यदि आप ऐसा महसूस करते हैं तो मुझे एक त्वरित और गंदा 'ऑडिट' पसंद आएगा :)

अपनी टोपोलॉजी के लिए मैं V2 के साथ EC2 का उपयोग कर रहा हूं। अमेज़ॅन लिनक्स एएमआई। मेरे पास एक इलास्टिक लोड बैलेंसर है जो 2 nginx सर्वर से लिंक करता है। ये सर्वर एक अलग php-fpm सर्वर से जुड़े हैं।

1 nginx सर्वर अक्षम है, जबकि मैं यह डीबग करता हूं।

यहाँ त्रुटि मुझे मिल रही है। मुझे यह अजीब लगता है क्योंकि मैं वास्तव में 10.0.0.94कहीं भी (अपने ज्ञान के लिए) उपयोग नहीं कर रहा हूं । मैं * .210 और * .248 का उपयोग कर रहा हूं।

2013/03/27 14:33:10 [error] 2724#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 10.0.0.94, server: www.example.com, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://10.0.0.210:9001", host: "xxx.us-east-1.elb.amazonaws.com"

संपादित करें: एक बात जिसका मैं उल्लेख करना भूल गया। मुझे लगता है कि क्योंकि php-fpm एक अलग सर्वर है, मैंने पढ़ा है कि मेरे पास nginx सर्वरों की तरह ही फाइलें होनी चाहिए। मेरे पास अभी तक rsync या कुछ भी सेटअप नहीं है ... मैंने सिर्फ एक साधारण index.php फ़ाइल को /var/www/html/example.com/index.phpएक परीक्षण के रूप में दोनों में अपलोड किया है ।

सर्वर 1 और 2 (nginx)

nginx.conf

# Run as a less privileged user for security reasons.
user  www www;

worker_processes  auto;

events {
    worker_connections  1024;
}

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

http {

    server_tokens  off;

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

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

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

    # How long to allow each connection to stay idle; longer values are better
    # for each individual client, particularly for SSL, but means that worker
    # connections are tied up longer. (Default: 65)
    keepalive_timeout  65;

    # Speed up file transfers by using sendfile() to copy directly
    # between descriptors rather than using read()/write().
    sendfile        on;

    # Tell Nginx not to send out partial frames; this increases throughput
    # since TCP frames are filled up before being sent out. (adds TCP_CORK)
    tcp_nopush      on;

    # Tell Nginx to enable the Nagle buffering algorithm for TCP packets, which
    # collates several smaller packets together into one larger packet, thus saving
    # bandwidth at the cost of a nearly imperceptible increase to latency. (removes TCP_NODELAY)
    tcp_nodelay     off; 

    gzip          on;
    gzip_http_version 1.0;
    gzip_disable      "msie6";
    gzip_comp_level   5;
    gzip_min_length   256;
    gzip_proxied      any;
    gzip_vary         on;
    gzip_types
      # text/html is always compressed by HttpGzipModule
      text/css
      text/plain
      text/x-component
      application/javascript
      application/json
      application/xml
      application/xhtml+xml
      application/x-font-ttf
      application/x-font-opentype
      application/vnd.ms-fontobject
      image/svg+xml
      image/x-icon;

    # Protect against the BEAST attack by preferring RC4-SHA when using SSLv3 and TLS protocols.
    # Note that TLSv1.1 and TLSv1.2 are immune to the beast attack but only work with OpenSSL v1.0.1 and higher and has limited client support.
    ssl_protocols              SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers                RC4:HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    # Optimize SSL by caching session parameters for 10 minutes. This cuts down on the number of expensive SSL handshakes.
    # The handshake is the most CPU-intensive operation, and by default it is re-negotiated on every new/parallel connection.
    # By enabling a cache (of type "shared between all Nginx workers"), we tell the client to re-use the already negotiated state.
    # Further optimization can be achieved by raising keepalive_timeout, but that shouldn't be done unless you serve primarily HTTPS.
    ssl_session_cache    shared:SSL:10m; # a 1mb cache can hold about 4000 sessions, so we can hold 40000 sessions
    ssl_session_timeout  10m;

    # This default SSL certificate will be served whenever the client lacks support for SNI (Server Name Indication).
    # Make it a symlink to the most important certificate you have, so that users of IE 8 and below on WinXP can see your main site without SSL errors.
    # ssl_certificate      /etc/nginx/default_ssl.crt;
    # ssl_certificate_key  /etc/nginx/default_ssl.key;

    upstream php {
        # ip_hash;
        server  10.0.0.210:9001;
    }

    include sites-enabled/*;
}

साइटों सक्षम / example.com

server {
    listen       80;
    server_name  www.example.com;
    root         /var/www/html/example.com;

    index  index.html index.htm index.php;
    charset utf-8;

    error_page 404 /system/404.html;
    error_page 403 /system/404.html;

    location ~ \.php$ {
        fastcgi_index  index.php;
        fastcgi_pass   php;
        include        fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        # fastcgi_intercept_errors on;
    }

    include conf/base.conf;
}

server {
    listen      80;
    server_name example.com;
    return 301  $scheme://www.example.com$request_uri;
}

सर्वर 3 (php-fpm)

php.ini

cgi.fix_pathinfo = 0

php-fpm.conf

;;;;;;;;;;;;;;;;;;;;;
; FPM Configuration ;
;;;;;;;;;;;;;;;;;;;;;


include=/etc/php-fpm.d/*.conf

;;;;;;;;;;;;;;;;;;
; Global Options ;
;;;;;;;;;;;;;;;;;;

[global]
pid = /var/run/php-fpm/php-fpm.pid

error_log = /var/log/php-fpm/error.log

emergency_restart_threshold = 5

emergency_restart_interval = 2

/etc/php-fpm.d/www.conf

[www]

listen = 127.0.0.1:9001

listen.allowed_clients = 10.0.0.248

user = www
group = www

pm = dynamic
pm.max_children = 50
pm.start_servers = 15
pm.min_spare_servers = 5
pm.max_spare_servers = 25

request_terminate_timeout = 30
slowlog = /var/log/php-fpm/www-slow.log
security.limit_extensions = .php

php_flag[display_errors] = off
php_admin_value[error_reporting] = 0
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
php_admin_value[memory_limit] = 128M

php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session

मैं अब तक मिल गया है के बारे में Thats: | धीरे-धीरे प्रगति कर रहा है ... धन्यवाद!

जवाबों:


1

तो यहाँ आपकी समस्या है /etc/php-fpm.d/www.conf:

listen = 127.0.0.1:9001

आप केवल लूपबैक पते को सुन रहे हैं, इसलिए यह आपके VPC में अन्य सर्वर से कनेक्शन प्राप्त नहीं कर सकता है।

इसके बजाय कोशिश करें:

listen = 9001

'सुरक्षा ऑडिट' के रूप में, वास्तव में आपको कुछ भी सार्थक देने के लिए यहां पर्याप्त जानकारी नहीं है। बस अपने सुरक्षा समूह को दोबारा जांचें।


यह काम करता हैं!! Dude! बहुत बढ़िया!
टैल्बॉय

वैसे मेरा मतलब था .. मोरेसो ऐसा दिखता है कि मैं स्पष्ट भेद्यताओं के खिलाफ संरक्षित हूं (जैसे शून्य दिन के कारनामे और इतने पर)
टैल्बॉय
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.