Nginx08-相关概念

FastCGI SCGI uWSGI是什么,和nginx有什么关系

FastCGI、SCGI 和 uWSGI 都是用于 Web 服务器与应用程序之间进行通信的协议或工具。
它们可以帮助将 Web 服务器(比如 nginx)与后端应用程序(比如 Python、Ruby 或 PHP 等)连接起来。

FastCGI(快速通用网关接口):是一种通信协议,用于将 Web 服务器与后端应用程序
(如 PHP、Python、Ruby 等)连接起来。它允许 Web 服务器将请求发送到一个独立的
FastCGI 进程池中,而不是直接与每个请求都建立新的进程或线程。这样可以提高性能和资源利用率。

SCGI(简单通用网关接口):与 FastCGI 类似,它也是一种用于 Web 服务器与后端应用程序
之间通信的协议。SCGI 的设计更加简单,它通常用于少量的请求,而 FastCGI 更适合大量的请求。

uWSGI:是一个 Web 服务器和应用服务器的软件,它实现了 WSGI(Web 服务器网关接口)协议,
允许 Python 应用程序与 Web 服务器进行通信。uWSGI 不仅仅支持 Python,还可以用于其他语言。
它可以作为一个独立的应用服务器运行,也可以与 Web 服务器(如 nginx)配合使用。

关于与 nginx 的关系:
nginx 是一个流行的 Web 服务器,它可以通过配置文件将 HTTP 请求转发给后端的应用程序,
而 FastCGI、SCGI 或 uWSGI 则是其中一种方式。nginx 通过与这些协议兼容的模块来与后端
应用程序进行通信。比如,你可以配置 nginx 通过 FastCGI 协议与 PHP-FPM(PHP FastCGI 
进程管理器)通信,或者通过 uWSGI 协议与 Python 应用程序通信。

升级

新版本解压后,进入源码目录,执行以下命令

# make命令会覆盖原安装选项,重新编译需要加上原选项

./configure
--user=nginx \
--group=nginx \
--prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-openssl=/usr/local/openssl-1.1.1o \
--pid-path=/var/run/nginx.pid
make
mv  /usr/local/nginx/sbin/nginx  /usr/local/nginx/sbin/`date +%F`-nginx.bak
cp nginx-xxx/objs/nginx  /usr/local/nginx/sbin/
make upgrade

指定新的openssl路径时,编译时需修改

打开nginx源文件下的 nginx-1.9.9/auto/lib/openssl/conf文件:

找到这么一段代码:
CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"
CORE_LIBS="$CORE_LIBS $NGX_LIBDL"

修改成以下代码:
CORE_INCS="$CORE_INCS $OPENSSL/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libcrypto.a"
CORE_LIBS="$CORE_LIBS $NGX_LIBDL"

FAQ
启动报错 nginx: [emerg] getpwnam("nginx") failed

原因是,在./configure时指定了 --user=nginx --group=nginx
解决方法 useradd -s /sbin/nologin -M nginx
posted @ 2024-05-11 15:38  立勋  阅读(3)  评论(0)    收藏  举报