Я пытаюсь настроить ASP.NET Core Environment для размещения моего приложения, но у меня возникли проблемы с веб-сервером nginx. Когда я пытаюсь подключиться к своему домену, я получаю 502 Bad Gateway
. Nginx должен просто работать как прокси-сервер для kestrel.
ЗдесьЭто ссылка на руководство, которому я следую. Конфигурация в значительной степени соответствует конфигурации, предлагаемой Microsoft, я просто изменил переменные, которые отличаются для каждой среды.
Строка, которая является проблемой, находится http://aspdotnethost;
в конце конфигурации nginx.conf. Когда я ее закомментирую, меня перенаправляют на www-адрес по умолчанию.
Так как же на самом деле работает эта строка и как мне правильно настроить перенаправление на localhost:5000?
/etc/nginx/proxy.conf
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffers 32 4k;
/etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
include /etc/nginx/proxy.conf;
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;
server_tokens off;
sendfile on;
keepalive_timeout 29; # Adjust to the lowest possible value that makes sense for your use case.
client_body_timeout 10; client_header_timeout 10; send_timeout 10;
upstream aspdotnethost {
server localhost:5000;
}
server {
listen *:80;
add_header Strict-Transport-Security max-age=15768000;
return 301 https://$host$request_uri;
}
server {
listen *:443 ssl;
server_name example.com *.example.com;
#Redirects all traffic
location / {
proxy_pass http://aspdotnethost;
limit_req zone=one burst=10;
}
}
}
Проверка конфигурации Nginx:
[root@rs-zap353479-1 patrick]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Когда я печатаю, curl http://localhost:5000
то получаю html-документ обратно. Так что этот компонент должен быть найден в моих глазах.
решение1
Как и Ойген Рик, опубликовавший комментарий, мне пришлось добавить псевдоним /etc/hosts
.
В качестве дополнительного шага мне нужно указать proxy_temp_path
в proxy.conf
, создать этот путь и присвоить его пользователю, под которым запущен nginx (в моем случае nginx
).