Назад | Перейти на главную страницу

CGI перестала работать над настройкой Nginx в качестве обратного прокси для apache

Итак, у меня есть сайт www.example.com. Изначально я использовал apache, и любое обращение к моему сайту перенаправлялось на www.example.com/path. Теперь это перенаправление определено в моем httpd.conf как:

Redirect 301 /index.html http://www.example.com/path

и мои настройки VirtualHost для этого домена выглядят так:

<VirtualHost 1.1.1.1:80>
    DirectoryIndex  index.php index.html index.htm index.shtml
    ServerAdmin root@www.example.com
    DocumentRoot "/var/www/html"
    ServerName www.example.com

    ScriptAlias /path "/path/to/cgi/script"

</VirtualHost>

Таким образом, когда кто-то посещает www.example.com, он перенаправляется на www.example.com/path, который выполняет сценарий CGI, как определено в директиве ScriptAlias.

Все работало нормально, пока мне не пришлось сделать следующее:

Установите nginx и настройте его для работы в качестве обратного прокси для apache.

Теперь nginx слушает порт 80, а apache слушает 8080. Я внес соответствующие изменения в файл httpd.conf.

Listen 8080

и

<VirtualHost 1.1.1.1:8080>

Теперь, когда кто-то пытается перейти на www.example.com, он перенаправляется на www.example.com/path, но скрипт не запускается. На моей веб-странице появляется следующая ошибка:

Not Found

The requested URL /path was not found on this server.
Apache/2.4.25 (Unix) PHP/7.0.16 SVN/1.7.14 Server at www.example.com Port 80

Тот факт, что он перенаправляет, говорит мне, что запрос от nginx к apache работает нормально. Должно быть что-то неправильное выполнение CGI. В журналах ошибок apache и журналах ошибок nginx ничего нет.

Я в этом не разбираюсь. С apache все работало нормально, но теперь, когда запрос достигает apache, что-то ломается.

Я устранил проблему, но не понимаю, как ее исправить. В моем nginx conf, где я перенаправляю запрос от nginx на порту 80 на apache на порту 8080, я заменил строку

proxy_pass http://127.0.0.1:8080;

с участием

proxy_pass http://www.example.com:8080;

По моему мнению, 127.0.0.1 и www.example.com должны быть такими же, как мой nginx установлен на сервере www.example.com.