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

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;

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 any other answers on Server Fault.

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