Nginx知多少系列之(五)Linux下托管.NET Core项目

目录

1.前言

2.安装

3.配置文件详解

4.工作原理

5.Linux下托管.NET Core项目

6.Linux下.NET Core项目负载均衡

7.Linux下.NET Core项目Nginx+Keepalived高可用(主从模式)

8.Linux下.NET Core项目Nginx+Keepalived高可用(双主模式)

9.Linux下.NET Core项目LVS+Keepalived+Nginx高可用集群

10.构建静态服务器

11.日志分析

12.优化策略

13.总结

在这里我就不介绍如何在Linux上部署.Net Core以及进程守护监控等内容,如果需要可以查看之前发布的文章。《.NET Core项目部署到Linux(Centos7)(六)发布.NET Core 项目到Linux》、《.NET Core项目部署到Linux(Centos7)(七)启动和停止.NET Core项目》、《.NET Core项目部署到Linux(Centos7)(八)为.NET Core项目创建Supervisor进程守护监控

ASP.NET Core内置了Kestrel服务器,但功能简单,不是一个全功能的Web服务器,主要用于SelfHost,它旨在使ASP.NET尽可能快,但其管理安全性和提供静态文件的能力有限,正式运行还是要依赖IIS、Apache、Nginx等功能全面的服务器,为ASP.NET Core程序提供类似缓存、压缩请求、SSL终端等高深的特性或功能。这两种服务器的关系是:Nginx、IIS等作为Kestrel的反向代理服务器。

1.端口映射配置

#编辑nginx.conf
sudo vim  /etc/nginx/nginx.conf

#进入文件后,按“i”或者“a”进入插入模式,插入下面的配置信息

进去注释掉http配置下server的默认配置内容

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
                      ‘$status $body_bytes_sent "$http_referer" ‘
                      ‘"$http_user_agent" "$http_x_forwarded_for"‘;

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

#    server {
#        listen       80 default_server;
#        listen       [::]:80 default_server;
#        server_name  _;
#        root         /usr/share/nginx/html;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        location / {
#        }
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }

# Settings for a TLS enabled server.
#
#    server {
#        listen       443 ssl http2 default_server;
#        listen       [::]:443 ssl http2 default_server;
#        server_name  _;
#        root         /usr/share/nginx/html;
#
#        ssl_certificate "/etc/pki/nginx/server.crt";
#        ssl_certificate_key "/etc/pki/nginx/private/server.key";
#        ssl_session_cache shared:SSL:1m;
#        ssl_session_timeout  10m;
#        ssl_ciphers HIGH:!aNULL:!MD5;
#        ssl_prefer_server_ciphers on;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        location / {
#        }
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }

}
#按ESC,输入命令保存配置文件
:wq   (保存编辑操作退出)
:wq!  (保存编辑强制退出)
:w ! sudo tee %

注释完原来的映射之后,我们需要在/etc/nginx/conf.d文件夹下为.Net Core项目新建一个DemoNetCore.conf文件,文件配置如下

#进入conf.d文件夹
cd /etc/nginx/conf.d

#创建配置文件
sudo touch DemoNetCore.conf

#编辑配置文件
sudo vim DemoNetCore.conf

#配置文件信息
server {
    listen       80;
    location / {
    proxy_pass http://localhost:8081;
    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;
    }
}

配置好之后重启Nginx,重启的时候可能会直接报错,如下图

#重启Nginx
sudo systemctl restart nginx

这个时候我们先找到Nginx相关进程,然后直接干掉,然后再启动

#查看Nginx进程
ps aux | grep nginx

#杀死相关进程
sudo kill -9 2058
sudo kill -9 2059

#重启Nginx
sudo systemctl restart nginx

2.验证效果

这里显示502 Bad Gateway,原因是SELinux配置的问题

安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。
SELinux 主要由美国国家安全局开发。2.6 及以上版本的 Linux 内核都已经集成了 SELinux 模块。
SELinux 的结构及配置非常复杂,而且有大量概念性的东西,要学精难度较大。很多 Linux 系统管理员嫌麻烦都把 SELinux 关闭了。
如果可以熟练掌握 SELinux 并正确运用,我觉得整个系统基本上可以到达"坚不可摧"的地步了(请永远记住没有绝对的安全)。
掌握 SELinux 的基本概念以及简单的配置方法是每个 Linux 系统管理员的必修课。

所以出现这个问题有两种解决方案:

①、直接关闭SELinux

#进入SELinux目录
cd /etc/selinux

#编辑selinux config配置文件
sudo vim config

#修改配置:SELINUX=disabled,保存退出

保存好之后,从enforcing或permissive改为diabled,需要重启系统之后才能生效。当我们重启之后,可以看到下图访问正常了。

②、将Nginx添加至SELinux的白名单

yum -y install policycoreutils-python
cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx
semodule -i mynginx.pp 

原文地址:https://www.cnblogs.com/jayjiang/p/12687144.html

时间: 2024-10-06 02:33:05

Nginx知多少系列之(五)Linux下托管.NET Core项目的相关文章

Nginx知多少系列之(四)工作原理

原文:Nginx知多少系列之(四)工作原理 目录 1.前言 2.安装 3.配置文件详解 4.工作原理 5.Linux下托管.NET Core项目 6.Linux下.NET Core项目负载均衡 7.Linux下.NET Core项目Nginx+Keepalived高可用(主从模式) 8.Linux下.NET Core项目Nginx+Keepalived高可用(双主模式) 9.Linux下.NET Core项目LVS+Keepalived+Nginx高可用集群 10.构建静态服务器 11.日志分析

Nginx知多少系列之(三)配置文件详解

原文:Nginx知多少系列之(三)配置文件详解 目录 1.前言 2.安装 3.配置文件详解 4.工作原理 5.Linux下托管.NET Core项目 6.Linux下.NET Core项目负载均衡 7.Linux下.NET Core项目Nginx+Keepalived高可用(主从模式) 8.Linux下.NET Core项目Nginx+Keepalived高可用(双主模式) 9.Linux下.NET Core项目LVS+Keepalived+Nginx高可用集群 10.构建静态服务器 11.日志

Nginx知多少系列之(二)安装

原文:Nginx知多少系列之(二)安装 目录 1.前言 2.安装 3.配置文件详解 4.工作原理 5.Linux下托管.NET Core项目 6.Linux下.NET Core项目负载均衡 7.Linux下.NET Core项目Nginx+Keepalived高可用(主从模式) 8.Linux下.NET Core项目Nginx+Keepalived高可用(双主模式) 9.Linux下.NET Core项目LVS+Keepalived+Nginx高可用集群 10.构建静态服务器 11.日志分析 1

S3C2416裸机开发系列十五_GCC下uCOS的移植(1)

S3C2416裸机开发系列十五 GCC下uCOS的移植(1) 象棋小子    1048272975 操作系统是用来管理系统硬件.软件及数据资源,控制程序运行,并为其它应用软件提供支持的一种系统软件.根据不同的种类,又可分为实时操作系统.桌面操作系统.服务器操作系统等.对于一些小型的应用,对系统实时性要求高,硬件资源有限等的情况下,应尽量避免使用复杂庞大的操作系统(如Linux),使用小型的实时操作系统(如uCOS)更能满足应用的需求.笔者此处就uCOS-II的移植作一个简单的介绍. 1. 代码准

S3C2416裸机开发系列十五_GCC下uCOS的移植(2)

S3C2416裸机开发系列十五 GCC下uCOS的移植(2) 象棋小子    1048272975 4. uCOS配置 uCOS是可裁减实时操作系统,可以根据实际的应用对内核未使用到的功能进行裁减,以进一步节省系统宝贵的硬件资源,通常可用的uCOS-II内核代码在6K~26K,这在uCOS-II配置文件os_cfg.h中进行配置,这个配置文件在源码目录为os_cfg_r.h,从目录中拷贝添加到uCOS/uCOS-II/Cfg目录中,并重命名为os_cfg.h. #ifndef OS_CFG_H

ASP.NET Core Web 应用程序系列(五)- 在ASP.NET Core中使用AutoMapper进行实体映射

原文:ASP.NET Core Web 应用程序系列(五)- 在ASP.NET Core中使用AutoMapper进行实体映射 本章主要简单介绍下在ASP.NET Core中如何使用AutoMapper进行实体映射.在正式进入主题之前我们来看下几个概念: 1.数据库持久化对象PO(Persistent Object):顾名思义,这个对象是用来将我们的数据持久化到数据库,一般来说,持久化对象中的字段会与数据库中对应的 table 保持一致. 2.视图对象VO(View Object):视图对象 V

linux下如何产生core,调试core

linux下如何产生core,调试core 摘自:http://blog.163.com/[email protected]/blog/static/19554784201131791239753/ 在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息).使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数. 1.core文件的生成开关和大小限制 1)使用ulimit -c命令可查看core文件的生成开关.若结果为0,则表示关闭了此

ASP.NET CORE系列【一】搭建ASP.NET CORE项目

原文:ASP.NET CORE系列[一]搭建ASP.NET CORE项目 为什么要使用 ASP.NET Core? NET Core 刚发布的时候根据介绍就有点心里痒痒,微软的尿性都懂的,新东西bug太多,现在2.0也发布很久了,决定研究一下. ASP.NET Core官方文档https://docs.microsoft.com/en-us/aspnet/core/getting-started ASP.NET Core 具有如下优点: 生成 Web UI 和 Web API 的统一场景. 集成

centos下搭建.NET Core项目运行环境

centos下搭建.NET Core项目运行环境:https://github.com/Somnus/somnus.github.io/blob/master/doc/code/centos%E4%B8%8B%E6%90%AD%E5%BB%BA.NET%20Core%E9%A1%B9%E7%9B%AE%E8%BF%90%E8%A1%8C%E7%8E%AF%E5%A2%83.md#%E7%99%BB%E5%BD%95%E6%95%B0%E6%8D%AE%E5%BA%93 原文地址:https://