V2EX POST
654 subscribers
138 photos
31 videos
99 files
101K links
v2ex新贴定时推送,可按需置顶本频道然后关闭通知
Download Telegram
静态资源通过 jwt 鉴权有什么现成的高性能轮子吗

就是某个路径下的资源要判断 jwt 字段`subscribed`为 1 且 jwt 没过期才能访问,否则返回 403

本来打算用 worker intercept 试试,后来看了下还是直接把 jwt 塞进 cookies 方便,只能用来获取资源的 jwt 不防跨站也没什么安全隐患

静态资源在独立的服务器上

自己写一个的话缓存不好实现,访问量不小,预算给的又少

(现在的做法是登录会员账号后往 cookies 里写固定 key ,nginx 直接两个 if 判断密码对不对,太不安全了,所有用户共用相同 key 很容易有人分享出去)

#jwt #cookies #key #资源 #subscribed #403 #worker #intercept #后往 #nginx
这个 trojan 脚本大佬的 trojan 怎么和 nginx 共用 443 的哈~

是这个大佬的脚本 ->https://github.com/jinwyp/one_click_script

我看星星很多,想去抄抄配置,没想美白哈

nginx 主配置
```
# user www-data www-data;
user root;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

events {
worker_connections 1024;
}





http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
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 /nginxweb/nginx-access.log main;
error_log /nginxweb/nginx-error.log;

sendfile on;
#tcp_nopush on;
keepalive_timeout 120;
client_max_body_size 20m;
gzip on;


include /etc/nginx/conf.d/*.conf;
}
```
这是网站的 nginx 配置
```
server {
listen 80;
server_name domain.net;
root /nginxweb/html;
index index.php index.html index.htm;

location /75f0d3d7 {
proxy_pass http://127.0.0.1:27493;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
```

这是 trojan 的配置
```
{
"run_type": "server",
"local_addr": "0.0.0.0",
"local_port": 443,
"remote_addr": "127.0.0.1",
"remote_port": 80,
"password": [
"123",
"12345"
],
"log_level": 1,
"log_file": "/root/trojan-access.log",
"ssl": {
"verify": true,
"verify_hostname": true,
"cert": "/nginxweb/cert/fullchain.cer",
"key": "/nginxweb/cert/private.key",
"sni": "domain.net",
"fallback_addr": "127.0.0.1",
"fallback_port": 80,
"fingerprint": "chrome"
},
"websocket": {
"enabled": true,
"path": "/0a195182",
"host": "domain.net"
}
}
```

netstat -tlnp|grep 27493 也没看到 27493 端口有啥活动哈,链接不上的感觉哈~

#log #nginx #http #proxy #remote #addr #nginxweb #set #header #user
阿里云一个空调修不好了是吧,刚把阿里云香港 C 区的服务重启完,然后又挂了。。。

早上刚把阿里云 C 区的十来个服务重启完,刚才一看又全 TM 挂 502 了。 登上去一看,果然,所有的 Docker ,Nginx ,服务都没了。又得重新重启。

这也太离谱了。。。。

一个空调修不好了是吧。。。

还好生产环境不在这个区。

#重启 #一看 #TM #502 #Docker #Nginx #服务 #十来个 #离谱 #阿里
nginx 配置完访问网站提示“您的连接不是私密连接”

本人 nginx 新手

背景说明:
1 、路由器开通了公网地址,通过 shareddns 自动更新域名解析( ali ),同时做了内网的端口转发。
2 、自己有一个虚拟黑群晖,黑群晖通过 acme.sh 使用 ali 的 RAM API (用户为 A )生成了泛域名( xxx.com );所有 docker 服务能通过黑群晖的反向代理,在公网使用 https 的域名+转发的端口方式访问进来。
3 、考虑到黑群晖性能瓶颈问题,也为了方便在 web 端管理内网的所有东西,搭了一个新的 centos7.6 ,并且完善了相应的工具,可以在内网成功实现 web 端的访问。

需求及条件描述:
port1 = 本身的端口
port2 = 转发的端口

1 、能通过 https://xxx.com:port2 的方式访问到内网 centos 里 docker 中的某一个容器的应用服务。
2 、已经做了对应端口转发及 nginx 配置(附后)
3 、centos 容器中的网络端口未使用 host 方式。
4 、centos 本地可通过 http://ip:port1 的方式正常访问。
5 、内网可通过 http://ip:port 的方式访问
6 、不做 https 的话,在外网可通过 http://xxx.com:port2 的方式进行不安全的访问
7 、centos 的 nginx 通过 acme.sh 生成了证书并且跟 nginx 服务做了关联,能自动更新证书(域名依旧是:xxx.com ) ---- 之前使用新的 RAM API 生成,后来改成跟黑群晖一样的 API 生成
8 、centos 的 hosts 及 hostname 都设置了 xxx.com
9 、已关闭 SELinux ,防火墙对应端口已放开

问题来了:
nginx 上监听 port 的 ssl,再用 https://xxx.com:port2 的方式访问就提示“您的连接不是私密连接”

请问该如何修改呢。恳请大佬支招,感谢!

附 ngixn 配置:

默认配置中,通过 include /etc/nginx/vhost/*.conf; 额外引入

server {

listen port2 ssl;
ssl_certificate /etc/nginx/ssl/xxx.com.cer;
ssl_certificate_key /etc/nginx/ssl/xxx.com.key;
server_name xxx.com;

ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;

client_max_body_size 10M;
location / {
proxy_pass http://ip:port1;
proxy_redirect http://$host/ http://$http_host/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;

}

}

#ssl #xxx #com #nginx #http #proxy #端口 #port2 #centos #访问
[emerg] "stream" directive is not allowed 怎么解哈,已经安装了模块

安装的是 oneinstack,
nginx.conf 插入 stream 代码的时候报错,
显示的是`nginx: [emerg] "stream" directive is not allowed here in /usr/local/nginx/conf/nginx.conf:86`

```
stream {
map $ssl_preread_server_name $backend_name {
test.domain.net trojan;
test1.domain.net web;
test2.domain.net web;
}

upstream trojan {
server 127.0.0.1:50443;
}

upstream web {
server 127.0.0.1:445;
}

server {
listen 443 reuseport;
listen [::]:443 reuseport;
proxy_pass $backend_name;
ssl_preread on;
}
}
```

网上普遍反应是没有安装模块,但似乎是装了的哈

```
nginx version: nginx/1.22.1
built by gcc 8.3.0 (Debian 8.3.0-6)
built with OpenSSL 1.1.1s 1 Nov 2022
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-http_ssl_module --with-stream --with-stream_ssl_preread_module --with-stream_ssl_module --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-openssl=../openssl-1.1.1s --with-pcre=../pcre-8.45 --with-pcre-jit --with-ld-opt=-ljemalloc

```

感谢

#-- #module #http #nginx #stream #ssl #server #conf #preread #name
想请教大家如何将 http 请求反代到 https 服务

目前有个需求,我们的业务场景是,客户流量->nginx(卸载 ssl ,https 转为 http)->流量处理(类似防火墙,但是有很多处理的过程)->nginx(将处理过的 http 重新加密为 https)->客户服务器,然后要求客户端和服务端都无感知,想请教大家,第二个 nginx(将处理过的 http 重新加密为 https)如何处理?

#nginx #https #http #处理 #加密 #流量 #有个 #ssl #客户服务器 #服务端
大佬们,问个问题

线上 k8s 有个 websocket 服务端的 pod ,外面用 nginx 做代理。
平常大概几万个客户端与服务端保持连接,然后每次重启以后客户端会重新连接到这个服务端。
但是我发现每次重启以后,客户端重新连接时常会出现客户端连接超时的问题,经排查看到 nginx 经常出现 upstream timeout 的问题。想问下这个问题有没有什么解决方式

#客户端 #服务端 #连接 #nginx #重启 #每次 #几万个 #问下 #k8s #有个
有现成的 RTSP 处理镜像吗 ?目的是网页可以直接播放

使用的技术栈是 FFmpeg + rtmp + flv.js

目前的做法:

1. 运行一个 rtmp nginx 服务
2. 使用 FFmpeg 把 rstp 转换成 rtmp 推到上述服务中
3. 前端使用 flv.js 拉流在网页上播放视频

诉求:

期待是能够做成一个镜像,可以动态配置 rtsp 直接对外提供视频播放能力

#rtmp #FFmpeg #flv #js #播放 #视频 #使用 #栈是 #nginx #rstp
想实现一个 nginx 的动态扩充 connections 的功能

目前手上的项目是 fork 的 nginx ,业务因为觉得默认设置一个大的 worker\_connections 会占用太多容器内存,所以想实现一个动态调整 ngx\_connection\_t 的功能,目前我设想了两个方案,希望可以讨论一下可行性。
1. 直接使用 nginx 自带的 reload 的方法,这个实现起来应该比较简单。
2. 调整数组 ngx\_connection\_t 的大小,这个就必须 new 一个新的数组再拷贝原数组的内容到新数组,同时可能还会涉及到一些并发的问题,如果在这里加锁也许会导致拷贝期间 nginx 不能对外服务?但是 new 一个新的数组开销可能比 new 一个 worker 小一点。
目前我可能更倾向于方法 1 ,总体工作量小一点而且不影响对外服务。

#数组 #nginx #new #worker #ngx #connection #拷贝 #一个 #默认设置 #加锁
uwsgi 和 nginx 部署 flask 项目

nginx 起来了,但是项目起不起来,报错:unable to load configuration from -,这是哪个配置文件出错了呢,Dockerfile ,uwsgi.ini 还是 nginx.conf 呢

补充:是用 docker-compose 启动的容器

#nginx #报错 #配置文件 #unable #load #configuration #Dockerfile #uwsgi #ini #conf