Puzzle: php code get displayed when turn on https

StCee asked:

When I try to set up https (let nginx listen on 443, with the ssl settings) and access my page, the quite surprising thing happens that I see my php code being displayed.

I see this in the nginx config
fastcgi_pass 127.0.0.1:9000;

Does it means nginx direct the php request to port 9000? my setting for https is like this

server {
listen 443;

ssl on;
ssl_certificate /etc/domain_com.crt;
ssl_certificate_key /etc/domain.key;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM;

server_name domain.com;
}

BTW my original structure is haproxy to nginx. Hope someone experienced on this can enlighten me a little bit. Thanks!

My answer:


You’re missing the location ~ .php block which passes requests upstream to php-fpm. Copy and paste it from your server block which serves the HTTP web site. Except for the SSL-specific settings, the two server blocks should probably be identical.


View the full question and answer on Server Fault.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.