# 504 gateway timeout

**URL:** <https://www.ruby-forum.com/t/504-gateway-timeout/206408>\
**Category:** NGINX\
**Created:** [April 30, 2011, 1:25am UTC](https://www.ruby-forum.com/t/504-gateway-timeout/206408 "2011-04-30T01:25:29Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![dubstep](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/cdc98d/32.png) [@dubstep](https://www.ruby-forum.com/u/dubstep)\
**Post date:** [April 30, 2011, 1:25am UTC](https://www.ruby-forum.com/t/504-gateway-timeout/206408/1 "2011-04-30T01:25:29Z")

</div>

Hello,

we are using Nginx + PHP FPM for the first time.

We run Nginx on a server with Plesk, which forced us to  
give Nginx the identification of “Apache”, so that  
Plesk is allowing this change.  
(Sorry… ;-))

So far all works great, but now it seems we are having some kind of  
timeout problem.

When I submit changes to the WordPress menu I get 504 gateway timeout  
error.  
I also use Smart Thumbs and get a blank page after entering my license  
key.

We think it is either a timeout problem or some kind of other  
limitation.

We tried to increase values in php.ini and php-fpm.conf and we also  
added  
and increased fastcgi\_read\_timeout.

But this all did not help.

Thanks!

BTW: Is is possible to get somewhere some kind of fulltime paid support  
with Nginx?  
Is there anywhere a list of Nginx experts we could hire?

Best Regards,  
Alex

Here is the nginx.conf:

# Nginx Conf File

user apache apache;  
worker\_processes 1;  
timer\_resolution 100ms;  
worker\_rlimit\_nofile 8192;  
worker\_priority -5;  
error\_log /var/log/nginx/nginx.error.log;  
events {  
worker\_connections 1024;  
use epoll;  
}  
http {  
include /etc/nginx/mime.types;  
default\_type application/octet-stream;  
log\_format main '$remote\_addr - $remote\_user [$time\_local] ’  
'“$request” $status $bytes\_sent ’  
'“$http\_referer” “$http\_user\_agent” ’  
‘“$gzip\_ratio”’;  
log\_format download '$remote\_addr - $remote\_user [$time\_local]  
’  
'“$request” $status $bytes\_sent ’  
'“$http\_referer” “$http\_user\_agent” ’  
‘“$http\_range” “$sent\_http\_content\_range”’;  
client\_header\_timeout 10m;  
client\_body\_timeout 10m;  
send\_timeout 999999;  
proxy\_read\_timeout 999999;  
proxy\_connect\_timeout 300;  
fastcgi\_read\_timeout 300;  
proxy\_send\_timeout 10m;  
connection\_pool\_size 256;  
client\_header\_buffer\_size 1k;  
large\_client\_header\_buffers 4 2k;  
request\_pool\_size 4k;  
gzip on;  
gzip\_disable “MSIE [1-6].”;  
gzip\_comp\_level 3;  
gzip\_min\_length 1100;  
gzip\_buffers 4 8k;  
gzip\_http\_version 1.1;  
gzip\_proxied any;  
gzip\_types text/plain application/xml application/x-javascript  
text/css;  
output\_buffers 1 32k;  
postpone\_output 1460;  
sendfile on;  
tcp\_nopush on;  
tcp\_nodelay on;  
keepalive\_timeout 999999;  
ignore\_invalid\_headers on;  
resolver 127.0.0.1;  
include /etc/nginx/conf.d/\*.conf;

### SET the path to the .dat file used for determining the visitor’s

country from the IP-address ###  
geoip\_country /usr/local/share/GeoIP/GeoIP.dat;  
geoip\_city /usr/local/share/GeoIP/GeoLiteCity.dat;

```
     #geoip_country GeoIP.dat;
     #geoip_city GeoLiteCity.dat;

```

### SET FASTCGI Variables

```
     fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;
     fastcgi_param GEOIP_COUNTRY_CODE3 $geoip_country_code3;
     fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;
 # fastcgi_param GEOIP_COUNTRY_CODE_BY_NAME

```

$geoip\_country\_code\_by\_name;  
}

Here php-fpm.conf

; Start a new pool named ‘www’.  
[www]

; The address on which to accept FastCGI requests.  
; Valid syntaxes are:  
; ‘ip.add.re.ss:port’ - to listen on a TCP socket to a specific  
address on  
; a specific port;  
; ‘port’ - to listen on a TCP socket to all addresses  
on  
a  
; specific port;  
; ‘/path/to/unix/socket’ - to listen on a unix socket.  
; Note: This value is mandatory.  
listen = 127.0.0.1:9000

; Set listen(2) backlog. A value of ‘-1’ means unlimited.  
; Default Value: -1  
;listen.backlog = -1

; List of ipv4 addresses of FastCGI clients which are allowed to  
connect.  
; Equivalent to the FCGI\_WEB\_SERVER\_ADDRS environment variable in the  
original  
; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each  
address  
; must be separated by a comma. If this value is left blank, connections  
will be  
; accepted from any ip address.  
; Default Value: any  
listen.allowed\_clients = 127.0.0.1

; Set permissions for unix socket, if one is used. In Linux, read/write  
; permissions must be set in order to allow connections from a web  
server.  
Many  
; BSD-derived systems allow connections regardless of permissions.  
; Default Values: user and group are set as the running user  
; mode is set to 0666  
;listen.owner = nobody  
;listen.group = nobody  
;listen.mode = 0666

; Unix user/group of processes  
; Note: The user is mandatory. If the group is not set, the default  
user’s  
group  
; will be used.  
; RPM: apache Choosed to be able to access some dir as httpd  
user = apache  
; RPM: Keep a group allowed to write in log dir.  
group = apache

; Choose how the process manager will control the number of child  
processes.  
; Possible Values:  
; static - a fixed number (pm.max\_children) of child processes;  
; dynamic - the number of child processes are set dynamically based on  
the  
; following directives:  
; pm.max\_children - the maximum number of children that  
can  
; be alive at the same time.  
; pm.start\_servers - the number of children created on  
startup.  
; pm.min\_spare\_servers - the minimum number of children in  
‘idle’  
; state (waiting to process). If the  
number  
; of ‘idle’ processes is less than  
this  
; number then some children will be  
created.  
; pm.max\_spare\_servers - the maximum number of children in  
‘idle’  
; state (waiting to process). If the  
number  
; of ‘idle’ processes is greater than  
this  
; number then some children will be  
killed.  
; Note: This value is mandatory.  
pm = dynamic

; The number of child processes to be created when pm is set to ‘static’  
and the  
; maximum number of child processes to be created when pm is set to  
‘dynamic’.  
; This value sets the limit on the number of simultaneous requests that  
will be  
; served. Equivalent to the ApacheMaxClients directive with mpm\_prefork.  
; Equivalent to the PHP\_FCGI\_CHILDREN environment variable in the  
original  
PHP  
; CGI.  
; Note: Used when pm is set to either ‘static’ or ‘dynamic’  
; Note: This value is mandatory.  
pm.max\_children = 50

; The number of child processes created on startup.  
; Note: Used only when pm is set to ‘dynamic’  
; Default Value: min\_spare\_servers + (max\_spare\_servers -  
min\_spare\_servers) / 2  
pm.start\_servers = 5

; The desired minimum number of idle server processes.  
; Note: Used only when pm is set to ‘dynamic’  
; Note: Mandatory when pm is set to ‘dynamic’  
pm.min\_spare\_servers = 5

; The desired maximum number of idle server processes.  
; Note: Used only when pm is set to ‘dynamic’  
; Note: Mandatory when pm is set to ‘dynamic’  
pm.max\_spare\_servers = 35

; The number of requests each child process should execute before  
respawning.  
; This can be useful to work around memory leaks in 3rd party libraries.  
For  
; endless request processing specify ‘0’. Equivalent to  
PHP\_FCGI\_MAX\_REQUESTS.  
; Default Value: 0  
;pm.max\_requests = 500

; The URI to view the FPM status page. If this value is not set, no URI  
will be  
; recognized as a status page. By default, the status page shows the  
following  
; information:  
; accepted conn - the number of request accepted by the pool;  
; pool - the name of the pool;  
; process manager - static or dynamic;  
; idle processes - the number of idle processes;  
; active processes - the number of active processes;  
; total processes - the number of idle + active processes.  
; The values of ‘idle processes’, ‘active processes’ and ‘total  
processes’  
are  
; updated each second. The value of ‘accepted conn’ is updated in real  
time.  
; Example output:  
; accepted conn: 12073  
; pool: www  
; process manager: static  
; idle processes: 35  
; active processes: 65  
; total processes: 100  
; By default the status page output is formatted as text/plain. Passing  
either  
; ‘html’ or ‘json’ as a query string will return the corresponding  
output  
; syntax. Example:  
; [http://www.foo.bar/status](http://www.foo.bar/status)  
; [http://www.foo.bar/status?json](http://www.foo.bar/status?json)  
; [http://www.foo.bar/status?html](http://www.foo.bar/status?html)  
; Note: The value must start with a leading slash (/). The value can be  
; anything, but it may not be a good idea to use the .php  
extension  
or it  
; may conflict with a real PHP file.  
; Default Value: not set  
;pm.status\_path = /status

; The ping URI to call the monitoring page of FPM. If this value is not  
set, no  
; URI will be recognized as a ping page. This could be used to test from  
outside  
; that FPM is alive and responding, or to  
; - create a graph of FPM availability (rrd or such);  
; - remove a server from a group if it is not responding (load  
balancing);  
; - trigger alerts for the operating team (24/7).  
; Note: The value must start with a leading slash (/). The value can be  
; anything, but it may not be a good idea to use the .php  
extension  
or it  
; may conflict with a real PHP file.  
; Default Value: not set  
;ping.path = /ping

; This directive may be used to customize the response of a ping  
request.  
The  
; response is formatted as text/plain with a 200 response code.  
; Default Value: pong  
;ping.response = pong

; The timeout for serving a single request after which the worker  
process  
will  
; be killed. This option should be used when the ‘max\_execution\_time’  
ini  
option  
; does not stop script execution for some reason. A value of ‘0’ means  
‘off’.  
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)  
; Default Value: 0  
;request\_terminate\_timeout = 0

; The timeout for serving a single request after which a PHP backtrace  
will be  
; dumped to the ‘slowlog’ file. A value of ‘0s’ means ‘off’.  
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)  
; Default Value: 0  
;request\_slowlog\_timeout = 0

; The log file for slow requests  
; Default Value: not set  
; Note: slowlog is mandatory if request\_slowlog\_timeout is set  
slowlog = /var/log/php-fpm/www-slow.log

; Set open file descriptor rlimit.  
; Default Value: system defined value  
;rlimit\_files = 1024

; Set max core size rlimit.  
; Possible Values: ‘unlimited’ or an integer greater or equal to 0  
; Default Value: system defined value  
;rlimit\_core = 0

; Chroot to this directory at the start. This value must be defined as  
an  
; absolute path. When this value is not set, chroot is not used.  
; Note: chrooting is a great security feature and should be used  
whenever  
; possible. However, all PHP paths will be relative to the chroot  
; (error\_log, sessions.save\_path, …).  
; Default Value: not set  
;chroot =

; Chdir to this directory at the start. This value must be an absolute  
path.  
; Default Value: current directory or / when chroot  
;chdir = /var/www

; Redirect worker stdout and stderr into main error log. If not set,  
stdout and  
; stderr will be redirected to /dev/null according to FastCGI specs.  
; Default Value: no  
;catch\_workers\_output = yes

; Pass environment variables like LD\_LIBRARY\_PATH. All $VARIABLEs are  
taken from  
; the current environment.  
; Default Value: clean env  
;env[HOSTNAME] = $HOSTNAME  
;env[PATH] = /usr/local/bin:/usr/bin:/bin  
;env[TMP] = /tmp  
;env[TMPDIR] = /tmp  
;env[TEMP] = /tmp

; Additional php.ini defines, specific to this pool of workers. These  
settings  
; overwrite the values previously defined in the php.ini. The directives  
are the  
; same as the PHP SAPI:  
; php\_value/php\_flag - you can set classic ini defines  
which  
can  
; be overwritten from PHP call  
‘ini\_set’.  
; php\_admin\_value/php\_admin\_flag - these directives won’t be  
overwritten  
by  
; PHP call ‘ini\_set’  
; For php\_\*flag, valid values are on, off, 1, 0, true, false, yes or no.

; Defining ‘extension’ will load the corresponding shared extension from  
; extension\_dir. Defining ‘disable\_functions’ or ‘disable\_classes’ will  
not  
; overwrite previously defined php.ini values, but will append the new  
value  
; instead.

; Default Value: nothing is defined by default except the values in  
php.ini and  
; specified at startup with the -d argument  
;php\_admin\_value[sendmail\_path] = /usr/sbin/sendmail -t -i -f  
removed\_email\_address@domain.invalid  
php\_flag[display\_errors] = on  
php\_admin\_value[error\_log] = /var/log/php-fpm/www-error.log  
php\_admin\_flag[log\_errors] = on  
;php\_admin\_value[memory\_limit] = 32M

–  
Erstellt mit Operas revolutionrem E-Mail-Modul:

> **[Opera Web Browser | Faster, Safer, Smarter | Opera](https://www.opera.com/)**
>
> Faster, safer and smarter than default browsers. Fully-featured for privacy, security, and so much more. Get the faster, better Opera browser for free.
