静态资源通过 jwt 鉴权有什么现成的高性能轮子吗
就是某个路径下的资源要判断 jwt 字段`subscribed`为 1 且 jwt 没过期才能访问,否则返回 403
本来打算用 worker intercept 试试,后来看了下还是直接把 jwt 塞进 cookies 方便,只能用来获取资源的 jwt 不防跨站也没什么安全隐患
静态资源在独立的服务器上
自己写一个的话缓存不好实现,访问量不小,预算给的又少
(现在的做法是登录会员账号后往 cookies 里写固定 key ,nginx 直接两个 if 判断密码对不对,太不安全了,所有用户共用相同 key 很容易有人分享出去)
#jwt #cookies #key #资源 #subscribed #403 #worker #intercept #后往 #nginx
就是某个路径下的资源要判断 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
是这个大佬的脚本 ->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
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 #访问
本人 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
安装的是 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
想实现一个 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 #拷贝 #一个 #默认设置 #加锁
目前手上的项目是 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
nginx 起来了,但是项目起不起来,报错:unable to load configuration from -,这是哪个配置文件出错了呢,Dockerfile ,uwsgi.ini 还是 nginx.conf 呢
补充:是用 docker-compose 启动的容器
#nginx #报错 #配置文件 #unable #load #configuration #Dockerfile #uwsgi #ini #conf