Я пытаюсь перенаправить весь трафик с www.impactteachers.com/teach на application.impactteachers/teach.
Таким образом, наша форма заявки также доступна по следующему URL-адресу: www.impactteachers.com/teach/
Это отлично работает на нашем текущем сервере Apache с помощью следующего правила:
ProxyRequests Off
ProxyPreserveHost On
<Proxy http://application.impactteachers.com:8080/teach/>
Order allow,deny
Allow from all
</Proxy>
ProxyPass /teach/ http://application.impactteachers.com:8080/teach/
ProxyPassReverse /teach/ http://application.impactteachers.com:8080/teach/
Поскольку мы переносим наш сайт на сервер Nginx, нам необходимо создать новое правило, согласно этой статье:Решение Nginx для Apache ProxyPassReverseи с вашей помощью на данный момент это текущий код:
location /teach {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://application.impactteachers.com:8080/teach;
proxy_redirect default;
}
Я проверил это, и ошибка 404 все еще выдается.
решение1
Попробуйте что-нибудь вроде этого:
upstream teach_backend {
server application.impactteachers.com:8080 fail_timeout=2s;
keepalive 32;
}
server {
listen 80;
server_name your_server_name.com;
location /teach {
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://teach_backend/teach;
proxy_redirect http://teach_backend/teach /teach;
#proxy_redirect default;
#expires -1;
#add_header Cache-Control "private";
}
}