Estou trabalhando em um projeto em https://modernamedia.no/ e estou tentando fazer várias coisas
- redirecione todas as chamadas para www.modernamedia.no para https://modernamedia.no/
- proxypass localhost:5000 para api.modernamedia.no
- redirecionar todas as chamadas http para https.
o último está funcionando. no entanto, os dois primeiros não estão funcionando. Você pode testá-lo acessando https://www.modernamedia.no/
Também estou lutando para alcançar meu localhost por meio de uma chamada de API, mas isso pode ser um problema relacionado ao código.
conf.d
server {
if ($host = www.modernamedia.no) {
return 301 https://modernamedia.no$request_uri;
} # managed by Certbot
if ($host = modernamedia.no) {
return 301 https://$host$request_uri;
} # managed by Certbot
# Redirect to the correct place, if needed
set $https_redirect 0;
if ($server_port = 80) { set $https_redirect 1; }
if ($host ~ '^www\.') { set $https_redirect 1; }
if ($https_redirect = 1) {
return 301 https://modernamedia.no$request_uri;
}
listen 80;
server_name modernamedia.no;
return 404; # managed by Certbot
}
server {
listen [::]:443 ssl http2 ipv6only=on;
listen 443 ssl http2; # managed by Certbot
server_name modernamedia.no;
location / {
proxy_pass http://localhost:4000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
ssl_certificate /etc/letsencrypt/live/modernamedia.no/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/modernamedia.no/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
# ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
listen 80;
server_name www.modernamedia.no;
return 301 https://modernamedia.no$request_uri;
}
server {
listen 81;
server_name api.modernamedia.no;
root /var/www/ModernaMedia/DotNet;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
sites disponíveis/padrão
server {
listen 81;
server_name api.modernamedia.no;
root /var/www/ModernaMedia/DotNet;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
modernamedia.service
[Unit]
Description=ModernaMedia Net5 service
[Service]
WorkingDirectory=/var/www/ModernaMedia/DotNet
ExecStart=/usr/bin/dotnet /var/www/ModernaMedia/DotNet/ModernaMediaDotNet.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=ModernaMedia-dotnet
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
E eu posso acessar meu servidor .NET através do curl
Você deve garantir que o Certbot não toque nos arquivos de configuração do nginx. Ele usa uma abordagem problemática e frágil para configurar as coisas.
Em vez disso, use a seguinte abordagem: