nginx - amzn2 和 nginx 流配置
问题描述
我正在尝试让 nginx 流在 amzn2 图像上工作。当您第一次尝试安装 nginx 时,图像会将您定向到
sudo amazon-linux-extras install nginx1
很好,我不介意使用他们的包,如果它可以工作,而且看起来它是一个足够晚的版本(1.20.0)。
它看起来也有流模块..
[root@ip-10-0-1-43 nginx]# yum list | grep nginx
nginx.x86_64 1:1.20.0-2.amzn2.0.3 @amzn2extra-nginx1
nginx-filesystem.noarch 1:1.20.0-2.amzn2.0.3 @amzn2extra-nginx1
collectd-nginx.x86_64 5.8.1-1.amzn2.0.1 amzn2extra-collectd
nginx-all-modules.noarch 1:1.20.0-2.amzn2.0.3 amzn2extra nginx1
nginx-mod-http-geoip.x86_64 1:1.20.0-2.amzn2.0.3 amzn2extra nginx1
nginx-mod-http-image-filter.x86_64 1:1.20.0-2.amzn2.0.3 amzn2extra nginx1
nginx-mod-http-perl.x86_64 1:1.20.0-2.amzn2.0.3 amzn2extra nginx1
nginx-mod-http-xslt-filter.x86_64 1:1.20.0-2.amzn2.0.3 amzn2extra nginx1
nginx-mod-mail.x86_64 1:1.20.0-2.amzn2.0.3 amzn2extra nginx1
nginx-mod-stream.x86_64 1:1.20.0-2.amzn2.0.3 amzn2extra nginx1
pcp-pmda-nginx.x86_64 4.3.2-12.amzn2.0.1 amzn2-core
[root@ip-10-0-1-43 nginx]#
我使用了默认的 nginx.conf 文件并将其修改为在没有流的情况下像我想要的那样工作,然后尝试添加流指令,但我继续收到错误。
[root@ip-10-0-1-43 nginx]# nginx -t
nginx: [emerg] unknown directive "stream" in /etc/nginx/nginx.conf:58
nginx: configuration file /etc/nginx/nginx.conf test failed
这是我的 nginx.conf 文件,在没有流部分的情况下可以正常工作,但我需要它通过 ssl 连接并让端口 82 也使用 ssl。如果没有流,我会得到 82 未加密的流量。
# 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 4096;
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;
# listen [::]:80;
# server_name _;
# root /usr/share/nginx/html;
#
# # Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#
# error_page 404 /404.html;
# location = /404.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
# }
# Settings for a TLS enabled server.
#
}
stream {
server {
listen 443;
ssl_certificate /var/cert/nginx.crt;
ssl_certificate_key /var/cert/nginx.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
# reverse proxy
proxy_pass 127.0.0.1:82;
proxy_buffer_size 16k;
}
}
我正准备推销这个 amazon-linux-extras 版本的 nginx 并从源代码编译,但鉴于流模块看起来已经安装,必须有办法让它工作。我试过查看 load_module,但找不到流库文件。我在 /usr/lib64/nginx/modules 中找到了它们的文件夹,但它是空的。
解决方案
您仍然必须安装流模块。
yum install nginx-mod-stream
一旦你这样做了,/usr/lib64/nginx/modules 中就有库,并且流指令将在没有对 nginx.conf 文件进行其他更改的情况下工作。
推荐阅读
- c++ - 我如何仍然可以在 while 循环中使用 Accept 来接受新客户端,但也想随时关闭服务器
- vue.js - 如何生成 blob URL?
- wcf - 将 Microsoft.Azure.ServiceBus 消息发送到 BizTalk 2013 WCF-Custom
- ruby-on-rails - YAML 转储不一致的字符串编码
- dataframe - 'numpy.int64' 对象在通过字典迭代时不可迭代
- azure - Azure Active Directory B2C - 在数据库中维护用户
- ruby - 反向外壳 - 如何让服务器打印发送给客户端的多条消息
- perl - 有没有办法在 if 语句中将变量设置为彼此相等?
- android - Firestore 数据未显示在 RecyclerView 中
- dart - 动画小部件推送其他小部件