2014-02-12 96 views
2

的nginx的配置如下:nginx的笨502网关

server { 
     listen  80; 
     server_name www.example.com; 

     root /home/wwwroot/example.com; 
     index index.php index.html index.htm; 

     location/{ 
       index index.php index.html index.htm; 
     } 

     location ~ \.php($|/) { 
      fastcgi_pass 127.0.0.1:9000; 
      fastcgi_index index.php; 
      fastcgi_split_path_info ^(.+\.php)(.*)$; 
      fastcgi_param PATH_INFO $fastcgi_path_info; 
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
      include  fastcgi_params; 
     } 

     if (!-e $request_filename) { 
      rewrite ^/(.*)$ /index.php/$1 last; 
      break; 
     } 

     location ~ /\.ht { 
       deny all; 
     } 
} 

,请给我一些建议,谢谢〜

+0

你在哪里得到应用根'502坏gateway'? –

+0

是的,在应用程序根目录 – Charles0429

+0

@RahilWazir在应用程序根目录 – Charles0429

回答

3

我终于把自己弄对了。

server { 
    listen  80; 
    server_name example.com; 

    root /home/wwwroot/example.com; 
    index index.php index.html index.htm; 

    location/{ 
    root /home/wwwroot/example.com; 
      index index.php index.html index.htm; 
     if (!-e $request_filename) { 
       rewrite ^/(.*)$ /index.php/$1 last; 
       break; 
     } 
    } 
    location ~ \.php($|/) { 
     fastcgi_pass unix:/tmp/php-cgi.sock; 
     fastcgi_index index.php; 
     fastcgi_split_path_info ^(.+\.php)(.*)$; 
     fastcgi_param PATH_INFO $fastcgi_path_info; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     include  fastcgi_params; 
    } 
    location ~ /\.ht { 
      deny all; 
    } 
} 
0
  • 您不必在location /根(本可能是好的)

  • 你还没有说明你是否试图从url中删除index.php(如果你试图访问没有index.php的URL并且不重写,这可能导致502)

  • 你缺少一些建议PARAMS

这里是我已经运行并与CI工作Nginx上配置版本(CentOS 6)。它从URL中删除index.php。这也是SSL,但如果你不需要,你可以把那些垃圾拿出来。它至少应该指出你在正确的方向。

server { 
    listen  80; 
    server_name _; 
    access_log /var/www/https/logs/access.log; 
    error_log /var/www/https/logs/error.log; 
    return  301 https://www.example.com$request_uri; 
} 

server { 
    listen 443 default_server ssl; 
    server_name *.example.com; 
    ssl on; 
    ssl_certificate /var/www/ssl/wildcard.example.com.chained.crt; 
    ssl_certificate_key /var/www/ssl/wildcard.example.com.key; 
    ssl_verify_depth 3; 
    access_log /var/www/https/logs/ssl/access.log; 
    error_log /var/www/https/logs/ssl/error.log; 

    #http://mailman.nginx.org/pipermail/nginx-announce/2013/000125.html 
    if ($request_uri ~ " ") { 
     return 444; 
    } 

    location/{ 
     root /var/www/https/; 

     # file doesn't exist, let CI handle it 
     if (!-f $request_filename) { 
       rewrite ^(.*) /index.php?$1 last; 
     } 
    } 

    location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)$ { 
     root    /var/www/https/; 
     access_log  on; 
     expires   30d; 
    } 

    location ~ \.php$ { 
     include fastcgi.conf;#/etc/nginx/fastcgi.conf 
     fastcgi_param SCRIPT_FILENAME /var/www/https$fastcgi_script_name; 
    } 
} 


/etc/nginx/conf.d/fastcgi.conf: 

fastcgi_pass 127.0.0.1:9000; 
fastcgi_index index.php; 
fastcgi_split_path_info ^(.+\.php)(.*)$; 
fastcgi_param QUERY_STRING $query_string; 
fastcgi_param REQUEST_METHOD $request_method; 
fastcgi_param CONTENT_TYPE $content_type; 
fastcgi_param CONTENT_LENGTH $content_length; 

fastcgi_param SCRIPT_NAME $fastcgi_script_name; 
fastcgi_param REQUEST_URI $request_uri; 
fastcgi_param DOCUMENT_URI $document_uri; 
fastcgi_param DOCUMENT_ROOT $document_root; 
fastcgi_param PATH_INFO $fastcgi_path_info; 
fastcgi_param SERVER_PROTOCOL $server_protocol; 

fastcgi_param GATEWAY_INTERFACE CGI/1.1; 
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; 

fastcgi_param REMOTE_ADDR $remote_addr; 
fastcgi_param REMOTE_PORT $remote_port; 
fastcgi_param SERVER_ADDR $server_addr; 
fastcgi_param SERVER_PORT $server_port; 
fastcgi_param SERVER_NAME $server_name; 

# PHP only, required if PHP was built with --enable-force-cgi-redirect 
fastcgi_param REDIRECT_STATUS 200; 

fastcgi_connect_timeout 60; 
fastcgi_send_timeout 180; 
fastcgi_read_timeout 180; 
fastcgi_buffer_size 128k; 
fastcgi_buffers 4 256k; 
fastcgi_busy_buffers_size 256k; 
fastcgi_temp_file_write_size 256k; 
fastcgi_intercept_errors on; 

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
1

我在Codeigniter + nginx上也出现这个错误,但是我通过改变代码解决了这个问题。 问题出在会议上。在会议中,我保存了stdClass对象。当我更改值或从会话检索值时,它会给我502坏的网关。所以我将会话值更改为关联阵列然后我的问题就解决了。我认为会话存储值超过这就是为什么服务器给出了错误502坏的网关。

+0

是的建议也适用于我 –

0

请将以下行添加到Nginx的配置文件/etc/nginx/nginx.conf

http { 
    ... 
    fastcgi_buffers 8 16k; 
    fastcgi_buffer_size 32k; 
    ... 
} 

reference