发布并运行asp.net core程序。
asp.net core 程序发布后默认点端口有俩个http://localhost:5000 和 https://localhost:5001 ,只能通过locaohost访问。 使用Nginx 反向代理用这俩个地址和端口即可。
如需要在同台服务器部署两个程序,端口冲突时,可在Program.cs中点CreateHostBuilder()中 使用 UseUrls()修改。
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder => {
webBuilder.UseStartup<Startup>();
webBuilder.UseUrls("http://*:5555", "https://*:5666");
//这里填写*号即为可以匹配所有指向本主机的域名。
//以此种方式配置后,在发布运行时,当安全策略端口被允许时 即可被外网访问
//asp.net core 默认设置发布后,不可被外网访问是因为他默认配置指定里localhost域名。
});
在使用Nginx 反向代理的情形下 这里配置的端口无须对外开放。
当asp.net core 程序成功运行时,打开Nginx 的配置文件nginx.conf,找到http代码块,复制一个默认的server代码块(nginx 配置文件中有默认被注释掉的)一个http代码块中可以存在多个server代码块。
如果在Nginx中配置了跨域,则尽量不要在.net 的程序中重复配置,负责会重复添加header信息,进而导致跨域。
server {
listen 7999; #监听的端口 也就是网站程序将来要使用点端口
server_name www.xxxx.com; #域名,如无域名可以不写,访问时直接用ip地址即可
location / {
#跨域设置
#允许跨域请求的域,* 代表所有 always表示所有的响应都会添加,如果不带always,只有200,201,204,206,301,302,303,304,307,308 特定code的响应会添加
add_header 'Access-Control-Allow-Origin' * always;
#允许请求的header
add_header 'Access-Control-Allow-Headers' *;
#允许带上cookie请求
add_header 'Access-Control-Allow-Credentials' 'true';
#允许请求的方法,比如 GET,POST,PUT,DELETE
add_header 'Access-Control-Allow-Methods' *;
if ($request_method = 'OPTIONS') {
return 204;
}
proxy_http_version 1.1;
proxy_pass http://127.0.0.1:9526; #反向代理;
}
}
重启nginx 完成。