nginx и apache (php) - PullRequest
       6

nginx и apache (php)

2 голосов
/ 19 февраля 2012

Я установил свой nginx, но теперь каждый * .php-файл на моем виртуальном хосте возвращает 500 внутреннюю ошибку сервера.

server {
listen   tucnak.dev:80; ## listen for ipv4; this line is default and implied

root /home/tucnak/Web/Lab;
index index.php index.html;

server_name tucnak.dev;

location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to index.html
    try_files $uri $uri/ /index.html;
}

location /doc {
    root /usr/share;
    autoindex on;
    allow 127.0.0.1;
    deny all;
}

location /images {
    root /usr/share;
    autoindex off;
}

#error_page 404 /404.html;

error_page 500 502 503 504 /50x.html;
location = /50x.html {
    root /usr/share/nginx/www;
}

location ~ \.php$ {
    proxy_pass http://127.0.0.1;
}

location  ~ \.php$ {
        set $php_root /home/tucnak/Web/Lab;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $php_root$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
#   deny all;
#}
}

Где моя ошибка?Мой php-файл полностью правильный!

 <?php echo("Hello!"); ?>

Я действительно новичок в nginx и мне нужна помощь с этим.После apache2 - я в замешательстве!

UPD: я думаю, что nginx не успешно выдает запрос на apache.Я не знаю, как это исправить.

1 Ответ

1 голос
/ 11 апреля 2012

Я гуглял и тестировал все учебники для дистрибутивов, с которыми мне приходилось сталкиваться, и ни один из них не работал.Итак, я узнал, что нужно обратиться к нужной документации для вашего дистрибутива, иначе она просто не будет работать.Итак, я нашел этот

У меня есть RHE5.7 Tikanga под управлением Apache 2.2.Два сайта, работающие на порте 8080 и nginx-1.0.14-1.el5.ngx 80. Я имею в виду, что у меня есть две директории, которые ссылаются на / var / www / html / site1 и / var / www / html / site2.Оба в php 5.

Для тех, кто администрирует сайты Red Hat, это сработало для меня

  1. Отредактируйте http.conf и измените на Listen 8080
  2. исправьте nginx.conf в соответствии с инструкциями сайта.
  3. Изменить файл виртуальных хостов /etc/httpd/conf.d/httpd-vhosts.conf или другой, если он может быть включен в директиву include http.conf следующим образом:

$ NameVirtualHost *: 8080

<VirtualHost *:8080>
    ServerAdmin me@mydomain.com
    ServerName localhost
    DocumentRoot /var/www/html/
</VirtualHost>

<VirtualHost *:8080>
    ServerAdmin me@mydomain.com
    ServerName site1
    DocumentRoot /var/www/html/site1
</VirtualHost>

<VirtualHost *:8080>
    ServerAdmin sleepy@nightmare.com
    ServerName site2
    DocumentRoot /var/www/html/site2
</VirtualHost>`

/ etc / nginx / nginx.conf - поправки В верхней части этого файла:

..... $worker_rlimit_nofile 20480; ....

    gzip_buffers 32 8k;
    gzip_comp_level   6;
    gzip_http_version 1.0;
    gzip_min_length   1;

Строка #include /etc/nginx/conf.d/*.conf была прокомментирована, поскольку это было бесполезно для меня).Весь оставшийся код не изменился, но мои IP и имя_сервера , в этом случае я поставил имя_хоста , а инструкция root осталась прежней в корне / usr / share/ nginx / html, который отличается от файла в виртуальном файле конфигурации / var / www / html /.Я предполагаю, что nginx в качестве внешнего интерфейса не знает (и даже не должен), где находятся веб-файлы, которые нужно обслуживать, кроме Apache.

Когда я захожу в любой браузер и набираю:

ip показывает страницу по умолчанию nginx, так что, я думаю, она слушает 80 порт;ip / site1 отображает site1 ip / site2 отображает site2

Любой другой порт, кроме 80 или 8080, отображает ошибку соединения.

regards.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...