Nginx应用配置实战

Nginx通用部署

Nginx常见参数介绍

Nginx 配置文件中的指令和参数决定了它的行为。下面详细介绍一些常见的 Nginx 参数,以帮助你更好地理解和配置 Nginx。

1. worker_processes

worker_processes auto;
  • 作用:设置 Nginx 处理请求的工作进程数量。auto 会根据 CPU 的核心数自动调整,或者你可以手动设置为特定的值。
  • 建议:通常将其设置为服务器 CPU 核心数,以最大化性能。如果服务器是多核的,使用 auto 是推荐做法。

2. worker_connections

worker_connections 1024;
  • 作用:每个 Nginx 工作进程能够处理的最大连接数。Nginx 的最大并发连接数是 worker_processes * worker_connections
  • 建议:如果你有大量的并发请求,适当增加该值。根据硬件和流量需求进行调整。

3. events

events {worker_connections 1024;
}
  • 作用:设置与网络事件处理相关的配置,比如连接的并发数和选择的事件模型。
  • 参数
    • use: 指定 Nginx 使用的事件处理模型,常见的是 epoll(Linux)或 kqueue(FreeBSD、MacOS)。
    • worker_connections: 如上所述,定义每个工作进程的最大连接数。

4. http

http {include /etc/nginx/mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;...
}
  • 作用:HTTP 块是 Nginx 配置文件中最重要的块,包含了所有与 HTTP 相关的配置。
  • 常见配置
    • include /etc/nginx/mime.types: 引入 MIME 类型配置文件,帮助 Nginx 正确地返回文件的 MIME 类型。
    • default_type: 设置默认的 MIME 类型,如果无法自动识别某种文件的 MIME 类型,默认会用该类型,通常为 application/octet-stream
    • sendfile on: 启用 sendfile 选项,加速文件传输,建议保持开启。
    • keepalive_timeout 65: 设置保持连接超时时间,单位为秒,表示客户端和服务器之间空闲连接的最大持续时间。

5. server

server {listen 80;server_name example.com;...
}
  • 作用server 块用于定义一个虚拟主机,配置不同域名或 IP 地址对应的服务器行为。
  • 常见配置
    • listen 80: 监听指定的端口,80 为 HTTP 的默认端口,443 为 HTTPS 默认端口。
    • server_name: 定义该服务器块的域名(如 example.com),可以使用通配符,如 *.example.com,也可以使用 IP 地址。

6. location

location / {proxy_pass http://localhost:8080;...
}
  • 作用location 指令用于匹配 URL 路径,并为该路径定义不同的处理方式。它通常用于反向代理、静态文件服务等。
  • 常见配置
    • proxy_pass: 将请求代理到后端服务器。可以是本地应用或远程服务器。
    • root: 定义处理该路径时所使用的根目录。比如用于静态资源的存放路径。
    • index: 指定默认的主页文件,当访问某目录时,会默认查找的文件(如 index.html)。

7. proxy_pass

location / {proxy_pass http://localhost:8080;
}
  • 作用proxy_pass 是 Nginx 中用于反向代理的核心指令,它将匹配到的请求转发给指定的后端服务器。
  • 说明proxy_pass 可以代理 HTTP、HTTPS 甚至 FastCGI、uwsgi 等多种协议。

8. upstream

upstream backend {server backend1.example.com weight=5;server backend2.example.com;server 127.0.0.1:8080;
}
  • 作用upstream 定义后端服务器集群,用于负载均衡。在 proxy_pass 中可以将请求转发到 upstream 定义的服务器组。
  • 常见配置
    • server: 定义一个后端服务器,可以使用 IP 地址或域名。
    • weight: 为某个后端服务器分配更大的权重,默认值是 1。
    • max_failsfail_timeout: 控制某台后端服务器在多少次失败后被认为不可用,以及多久后再重新尝试。

9. gzip

gzip on;
gzip_types text/plain application/json;
  • 作用:启用或关闭响应的压缩功能,以减少传输的数据大小,提升性能。
  • 常见配置
    • gzip: 启用或禁用压缩功能,设置为 onoff
    • gzip_types: 定义哪些 MIME 类型的文件会被压缩,常见的有 text/htmlapplication/json 等。

10. log_formataccess_log

log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" "$http_user_agent"';
access_log /var/log/nginx/access.log main;
  • 作用log_format 用于定义访问日志的记录格式,而 access_log 用于指定日志的存储位置和使用的日志格式。
  • 常见配置
    • $remote_addr: 记录客户端 IP 地址。
    • $status: 记录请求的 HTTP 状态码。
    • $body_bytes_sent: 记录响应内容的大小(字节数)。

11. error_log

error_log /var/log/nginx/error.log warn;
  • 作用:配置错误日志文件的位置和记录级别。
  • 日志级别
    • debug: 记录所有级别的日志,包括调试信息。
    • info: 记录一般的运行信息。
    • notice: 记录需要注意的事件。
    • warn: 记录警告信息。
    • error: 记录错误信息。
    • crit: 记录严重错误。

12. client_max_body_size

client_max_body_size 50m;
  • 作用:限制客户端请求主体的最大大小。如果请求体超过这个限制,Nginx 会返回 413(Request Entity Too Large)错误。
  • 建议:在上传大文件时,可以适当增加这个值。

13. keepalive_timeout

keepalive_timeout 65;
  • 作用:设置客户端和服务器之间保持活动的连接的超时时间。超时后连接会被关闭。
  • 建议:根据需求调整,默认 65 秒适合大多数场景。

14. listen

listen 80;
listen [::]:80;
  • 作用:配置服务器监听的端口,通常是 HTTP 的 80 端口或 HTTPS 的 443 端口。
  • 参数
    • [::]:80: 表示监听所有 IPv6 地址。
    • ssl: 用于启用 SSL/TLS 加密。

15. ssl_certificatessl_certificate_key

ssl_certificate /etc/ssl/certs/example.com.crt;
ssl_certificate_key /etc/ssl/private/example.com.key;
  • 作用:在配置 HTTPS 时,ssl_certificate 指定 SSL 证书的位置,ssl_certificate_key 指定私钥的位置。

16. return

return 301 https://$server_name$request_uri;
  • 作用:用于执行重定向或返回特定的 HTTP 状态码。
  • 参数
    • 301: 返回 301 永久重定向。
    • 302: 返回 302 临时重定向。

以上是 Nginx 配置文件中一些重要参数的详细介绍。根据你的应用场景,这些参数可以灵活组合使用,帮助你优化 Nginx 的性能和功能。

Nginx部署Java服务

Nginx 是一个轻量级、高性能的 Web 服务器,常用于反向代理、负载均衡和静态资源服务。下面详细讲解如何配置 Nginx 以部署 Java 服务。

1. 安装 Nginx

在大多数 Linux 发行版上,使用包管理器安装 Nginx:

# Ubuntu/Debian
sudo apt update
sudo apt install nginx# CentOS/RHEL
sudo yum install nginx

启动和检查 Nginx 是否正常运行:

sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx

2. Nginx 基础配置文件

Nginx 的主配置文件通常位于 /etc/nginx/nginx.conf。典型的目录结构如下:

  • /etc/nginx/nginx.conf: 主配置文件
  • /etc/nginx/conf.d/: 存放其他虚拟主机配置
  • /var/www/: 默认的网站根目录

Nginx 的基本配置结构如下:

worker_processes auto;
events {worker_connections 1024;
}http {include /etc/nginx/mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;include /etc/nginx/conf.d/*.conf;
}

3. 配置反向代理(用于 Java 服务)

假设你有一个基于 Spring Boot 的 Java 应用程序运行在 http://localhost:8080。你可以通过 Nginx 将外部请求转发给该 Java 服务。

/etc/nginx/conf.d/ 下创建一个配置文件,如 java_app.conf

server {listen 80;server_name example.com; # 将其替换为你的域名或服务器IPlocation / {proxy_pass http://localhost:8080; # 代理到 Java 服务的地址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;}
}

说明

  • listen 80: 监听 HTTP 80 端口。
  • server_name: 配置你的域名或 IP 地址。
  • proxy_pass: 将请求代理到运行 Java 应用程序的本地地址(例如,localhost:8080)。
  • proxy_set_header: 传递客户端请求的一些信息到后端 Java 应用,比如 IP 地址和协议。

4. 配置 SSL(HTTPS)

为了保证安全,建议使用 HTTPS。可以通过 Let’s Encrypt 获取免费 SSL 证书。

安装 certbot 工具:

# Ubuntu
sudo apt install certbot python3-certbot-nginx

然后运行以下命令为你的域名获取证书:

sudo certbot --nginx -d example.com

Nginx 会自动配置 HTTPS。生成的配置大致如下:

server {listen 443 ssl;server_name example.com;ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;location / {proxy_pass http://localhost:8080;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;}
}server {listen 80;server_name example.com;return 301 https://$host$request_uri;
}

说明

  • 443 端口用于 SSL。
  • 配置 SSL 证书路径,/etc/letsencrypt/live/ 存放的是通过 Let’s Encrypt 获取的证书。
  • 第二个 server 块会将所有 HTTP 请求重定向到 HTTPS。

5. Nginx 配置负载均衡

如果你的 Java 服务部署在多台服务器上,可以使用 Nginx 做负载均衡。配置示例:

upstream java_backend {server 192.168.1.10:8080;server 192.168.1.11:8080;server 192.168.1.12:8080;
}server {listen 80;server_name example.com;location / {proxy_pass http://java_backend;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;}
}

说明

  • upstream 块定义了一个名为 java_backend 的后端服务器组,可以配置多个 IP 地址进行负载均衡。
  • proxy_pass 将请求转发给该服务器组。

6. 常见 Nginx 命令

# 检查配置是否正确
sudo nginx -t# 重新加载 Nginx 配置
sudo systemctl reload nginx# 查看 Nginx 状态
sudo systemctl status nginx

7. 日志管理

Nginx 的访问日志和错误日志通常位于 /var/log/nginx/access.log/var/log/nginx/error.log

可以在 server 块中自定义日志路径:

server {listen 80;server_name example.com;access_log /var/log/nginx/java_app_access.log;error_log /var/log/nginx/java_app_error.log;location / {proxy_pass http://localhost:8080;}
}

Nginx配置举例

Nginx配置websocket

在基于 STOMP 协议的 WebSocket 应用中,如果你通过 Nginx 作为反向代理来处理 HTTPS(SSL/TLS)连接,并且需要支持 WebSocket,则需要确保 Nginx 正确处理 WebSocket 升级请求,同时配置 SSL 证书来启用 HTTPS

以下是如何在 Nginx 中配置 HTTPS,并支持基于 STOMP 协议的 WebSocket。

步骤一:准备 SSL 证书

要启用 HTTPS,首先你需要 SSL 证书。如果你没有 SSL 证书,可以使用以下方式获取:

  1. 自签名证书(测试使用):可以使用 openssl 工具生成自签名证书。
  2. Let’s Encrypt:可以通过 Let’s Encrypt 免费获取 SSL 证书(适合生产环境)。
生成自签名证书(测试使用):
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/server.key -out /etc/nginx/ssl/server.crt
  • 生成一个有效期为 365 天的自签名 SSL 证书和密钥文件,并将其存储在 /etc/nginx/ssl/ 路径下。

步骤二:配置 Nginx 支持 HTTPS 和 WebSocket

配置 Nginx 来支持 HTTPS 和 WebSocket 升级请求。在 Nginx 的 server 配置块中,需要同时启用 SSL 并配置 WebSocket 的 UpgradeConnection 头部。

完整的 Nginx 配置示例:
server {listen 443 ssl;server_name your-domain.com;  # 替换为你的域名或服务器 IP 地址# 配置 SSL 证书ssl_certificate /etc/nginx/ssl/server.crt;  # 替换为你的 SSL 证书路径ssl_certificate_key /etc/nginx/ssl/server.key;  # 替换为你的 SSL 私钥路径# SSL 配置ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers HIGH:!aNULL:!MD5;# WebSocket 相关配置location /ws {proxy_pass http://localhost:31004;  # 代理到后端 WebSocket 服务proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "Upgrade";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;proxy_read_timeout 3600;proxy_send_timeout 3600;proxy_set_header X-NginX-Proxy true;}# 通常的 HTTP/HTTPS 请求location / {proxy_pass http://localhost:8080;  # 代理到你的应用服务,例如Spring Boot应用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;}
}# 重定向 HTTP 到 HTTPS
server {listen 80;server_name your-domain.com;location / {return 301 https://$host$request_uri;  # 强制将 HTTP 重定向到 HTTPS}
}

关键配置解释:

  1. SSL 证书配置

    • ssl_certificatessl_certificate_key:指定 SSL 证书和私钥的路径,用于 HTTPS 加密。
    • ssl_protocolsssl_ciphers:定义支持的 SSL/TLS 协议和加密套件。
  2. WebSocket 升级

    • proxy_set_header Upgrade $http_upgrade;:告诉 Nginx 将普通的 HTTP 请求升级为 WebSocket 连接。
    • proxy_set_header Connection "Upgrade";:确保 Connection 头部被正确设置为 Upgrade
    • proxy_read_timeoutproxy_send_timeout:配置 WebSocket 连接的超时,防止连接因空闲时间过长而被关闭。
  3. 代理到 WebSocket 服务

    • proxy_pass http://localhost:31004;:将 WebSocket 请求代理到后端实际运行的 WebSocket 服务器(例如运行 STOMP WebSocket 的 Spring Boot 服务)。
  4. HTTP 重定向到 HTTPS

    • 配置第二个 server 块,监听端口 80,将所有 HTTP 请求重定向到 HTTPS。

步骤三:配置 Spring Boot WebSocket 支持

后端 Spring Boot 项目需要正确配置 WebSocket 支持,确保 WebSocket 端点和 STOMP 协议配置一致。

Spring Boot WebSocket 配置示例:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {@Overridepublic void registerStompEndpoints(StompEndpointRegistry registry) {// 这里的 /ws 是 WebSocket 连接端点,前端需要通过这个路径连接registry.addEndpoint("/ws").setAllowedOrigins("*")  // 允许跨域,或者指定域名.withSockJS();  // 如果需要兼容旧版浏览器,可以启用 SockJS}@Overridepublic void configureMessageBroker(MessageBrokerRegistry config) {// 配置消息代理config.enableSimpleBroker("/topic", "/queue");config.setApplicationDestinationPrefixes("/app");}
}

步骤四:前端 WebSocket 连接

在前端代码中,确保 WebSocket 连接使用 wss:// 协议,因为你正在通过 HTTPS 加密连接。

前端示例代码:
// 使用 wss:// 进行 WebSocket 连接
const wsUrl = 'wss://your-domain.com/ws';
const socket = new WebSocket(wsUrl);// 使用 STOMP 协议
const stompClient = Stomp.over(socket);stompClient.connect({}, function (frame) {console.log('Connected: ' + frame);// 订阅消息stompClient.subscribe('/topic/messages', function (message) {console.log('Received: ' + message.body);});// 发送消息stompClient.send('/app/hello', {}, JSON.stringify({ name: 'Hello World' }));
}, function (error) {console.error('Connection error: ', error);
});

常见问题及排查:

  1. SSL 证书问题

    • 如果浏览器提示 SSL 证书无效,可能是因为使用了自签名证书。为了在生产环境中避免这种情况,建议使用 Let’s Encrypt 或其他可信的 CA 机构签发的证书。
  2. WebSocket 升级失败

    • 如果 Nginx 没有正确处理 WebSocket 升级,可能会导致连接失败。检查 Nginx 日志以及浏览器开发者工具中的网络请求,确保请求的 UpgradeConnection 头部被正确处理。
  3. 跨域问题

    • 如果前端和后端的域名或端口不一致,可能会导致跨域问题。确保 Nginx 和后端应用正确配置了 CORS
  4. 客户端使用 HTTPS

    • 如果前端页面是通过 HTTPS 访问的,WebSocket 连接必须使用 wss:// 协议,否则浏览器会阻止不安全的连接。

总结

通过上述步骤,你可以在 Nginx 中配置 HTTPS,并支持基于 STOMP 协议的 WebSocket。关键在于:

  • 正确处理 WebSocket 的升级请求,确保 Nginx 代理能够支持 WebSocket 连接。
  • 配置 SSL 证书,以启用 HTTPS 和 WSS 加密连接。
  • Spring Boot 的 WebSocket 端点配置,确保前端能够连接到正确的 WebSocket 服务。

后续配置举例持续更新中~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/55909.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[搜索] 质数

题目描述 给定 n n n 个正整数,将它们分组,使得每组中任意两个数互质。至少要分成多少个组? 在满足最少的组数的情况下,使得元素个数最多的那一组的元素个数尽可能的少。 输入格式 第一行 1 1 1 个数 n n n。 接下来 n n n…

CSS 3D转换

在 CSS 中,除了可以对页面中的元素进行 2D 转换外,您也可以对象元素进行 3D转换(将页面看作是一个三维空间来对页面中的元素进行移动、旋转、缩放和倾斜等操作)。与 2D 转换相同,3D 转换同样不会影响周围的元素&#x…

CVE-2024-36971漏洞修复----Debian 10.13 内核升级

CVE-2024-36971漏洞修复---Debian 10.13 内核升级 1. 下载内核2. 安装依赖包3. 二进制安装3.1 上传3.2 解压3.3 修改配置文件3.4 编译3.5 安装内核及模块 4. 重启服务器并确认升级成功 1. 下载内核 到kernel.org下载新版的Kernel 由于开发那边不想让Kernel跨大版本,所以就升级…

IDEA使用技巧

在使用IntelliJ IDEA(简称IDEA)这类集成开发环境(IDE)时,掌握一些高效的使用技巧和安装合适的插件可以显著提升开发效率。以下将从IDEA的使用技巧和插件推荐两个方面进行详细阐述。 一、IDEA使用技巧 1. 快捷键操作 …

docker tar包安装 docker-26.1.4.tgz

一、docker安装 1.先将docker安装包(docker-26.1.4.tgz)拷贝到DM系统中。 下载地址 Index of linux/static/stable/x86_64/ 1.先将docker安装包(docker-26.1.4.tgz)拷贝到DM系统中。 2.解压docker安装包 tar zxf docker-26.1.…

OpenCV高级图形用户界面(1)创建滑动条函数createTrackbar()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 创建一个滑动条并将其附加到指定的窗口。 该函数 createTrackbar 创建一个具有指定名称和范围的滑动条(滑块或范围控制)…

机器学习笔记-1

文章目录 前言一、How to find a function二、Define Loss from Training Data三、Optimization总结 前言 机器学习(Machine Learning, ML)是一门让计算机通过数据来自动学习和改进的技术。它的核心理念是通过分析大量的历史数据来找到其中的规律&#…

Qt-链接数据库可视化操作

1. 概述 Qt 能够支持对常见数据库的操作,例如: MySQL、Oracle、SqlServer 等等。 Qt SQL模块中的API分为三层:驱动层、SQL接口层、用户接口层。 驱动层为数据库和SQL接口层之间提供了底层的桥梁。 SQL接口层提供了对数据库的访问&#xff0…

蓝桥杯【物联网】零基础到国奖之路:十六. 扩展模块之矩阵按键

蓝桥杯【物联网】零基础到国奖之路:十六. 扩展模块之矩阵按键 第一节 硬件解读第二节 CubeMX配置第三节 MDK代码 第一节 硬件解读 扩展模块和ADC模块是一摸一样的,插在主板上。 引脚对应关系: PB6-ROW1 PB7-ROW2 PB1-COLUMN1 PB0-COLUMN2 PA8-COLUMN3 …

SQL 注入漏洞 - 学习手册

0x01:SQL 注入前导知识 0x0101:SQL 注入 —— MySQL 数据库概述 知识速查:SQL 注入前导知识 SQL 注入 —— MySQL 数据库概述 获取数据库名 : select schema_name from information_schema.schemata;获取数据表名 : select table_name from …

adb安装教程(Windows10)

本章教程,主要介绍如何在Windows10操作系统上安装adb。 一、adb简介 ADB,全称为Android Debug Bridge,是Android开发中一个重要的命令行工具。它用于与Android设备进行通信,提供了多种功能来帮助开发者进行调试和应用管理。 二、下…

Qt第三课 ----------显示类的控件属性

作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 ​🎂 作者介绍: 🎂🎂 🎂 🎉🎉&#x1f389…

Java中的状态机实现:使用Spring State Machine管理复杂状态流转

在软件开发中,我们经常会遇到需要处理各种状态以及状态之间转换的场景。这些状态转换有时会变得非常复杂,特别是当涉及到多个状态,并且每个状态都有多个可能的触发事件导致不同的状态变化时。手动编写这样的逻辑不仅容易出错,而且…

美团Java一面

美团Java一面 9.24一面,已经寄了 收到的第一个面试,表现很不好 spring bean生命周期 作用域(忘完了) 为什么用redis缓存 redis和数据库的缓存一致性问题 redis集群下缓存更新不一致问题 aop说一下 arraylist和linkedlist 数据库的…

kali(专业的渗透测试虚拟机)|kali下载链接地址 |kali安装 |kali部署指南

介绍 kali 是Debian开源linux系统体系下的子分支之一 Debian-kali 扩展:Ubuntu也是Debian开源linux系统体系下的子分支之一 Debian-ubuntu 安装kali 2023.03 稳定版 Index of /kali-images/kali-2023.1/ 安装可以参考他的教程, 写的很详细了…

软件工程系列(1)需求工程

需求工程需求工程是软件开发过程中的关键环节,旨在明确和管理用户需求。其主要步骤包括: 1. 需求获取 方法:访谈、问卷、观察和焦点小组等。目标:理解用户需求,收集功能和非功能需求。2. 需求分析 整理与分类:将收集到的需求进行整理,识别优先级和依赖关系。建模:使用…

C语言-数据结构 折半查找

在折半查找中,刚开始学可能会在下标处产生困惑,例如奇数个长度的数组怎么处理,偶数个长度的数组怎么处理,不需要修改代码吗?并且下标我从1开始算和0开始算影响代码吗?其实都可以用一样的代码,产…

nginx 资料整理(三)- web

nginx 资料整理(三) 1. web服务器1. 日志功能1. 访问日志2. 错误日志3. 实例演示 2. 网站功能列表1. autoindex2. autoindex_localtime 3. 认证功能1. auth_basic2. 实例演示 4. 访问控制功能1. allow & deny2. 局限性3. 实例演示 5. 状态模块1. stu…

论文阅读:Split-Aperture 2-in-1 Computational Cameras (二)

Split-Aperture 2-in-1 Computational Cameras (一) Coded Optics for High Dynamic Range Imaging 接下来,文章介绍了二合一相机在几种场景下的应用,首先是高动态范围成像,现有的快照高动态范围(HDR)成像工作已经证…

多种方式确定Linux是CentOS还是Ubuntu

目录 前言正文 前言 对应的基本知识比较少,以下只是记录总结 由于目前使用的是centos,后续找到linux会对应补充 正文 要确定Linux系统是CentOS还是Ubuntu,可以通过以下几种方式进行分析 一、查看发行版信息文件: CentOS&…