eSP*_*iYa 8 nginx docker docker-compose visual-studio-2017 asp.net-core-2.1
我想使用Nginx作为我的ASP.NET Core 2.x项目的Web服务器,使用本教程作为基础.我刚刚省略了server_name(用于将在web项目中实现的多租户).所有HTTP/80请求都将重定向到HTTPS/443.
我使用Angular项目创建了一个ASP.NET Core 2.x并启用了"Configure for HTTPS",然后添加了Docker支持,它为项目创建了默认的Dockerfile,并为Docker-compose创建了一个项目.
在Dockerfile中,我删除了自动生成的端口号,而是暴露了端口80和443:
#EXPOSE 61876
#EXPOSE 44340
EXPOSE 80
EXPOSE 443
Run Code Online (Sandbox Code Playgroud)
然后创建一个文件并将其命名为nginx.conf:
worker_processes 4;
events { worker_connections 1024; }
http {
sendfile on;
server {
listen 443;
location / {
proxy_pass $scheme://erp.web;
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后将docker-compose.yml(版本3.4)修改为:
services:
erp.web:
image: ${DOCKER_REGISTRY}erpweb
build:
context: .
dockerfile: Erp.Web/Dockerfile
proxy:
image: nginx:latest
ports:
- 80:80
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
Run Code Online (Sandbox Code Playgroud)
与docker-comspoe.override.yml这样:
services:
erp.web:
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_HTTPS_PORT=443
ports:
- "80" #"61876:80"
- "443" #"44340:443"
volumes:
- ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
- ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
Run Code Online (Sandbox Code Playgroud)
当我尝试浏览https:// localhost时,它说它无法访问服务器.此外,当我尝试检查Docker容器列表时,Nginx服务器仍然使用端口80,而我的Web应用程序项目具有以下端口:
some-random-port(currently 32771)->80, some-other-random-port(32770 for now)->443
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
867 次 |
| 最近记录: |