Closed uepuer closed 1 year ago
error日志有报什么错误么,另外可以给一个稍微完整点的可复现的最小化配置么,方便重现排查
error 的日志只有一个错误 :root@VM-0-8-debian:/mnt# tail -f /home/logs/nginx/error.log
2023/08/29 10:36:05 [error] 38134#0: *1 "/usr/local/nginx/html/index.html" is forbidden (13: Permission denied), 后面ip 我就没复制了
另外我把配置简化了一下: ./configure --prefix=/usr/local/nginx \ --user=www --group=www \ --sbin-path=/usr/sbin/nginx \ --conf-path=/usr/local/nginx/config/nginx.conf \ --error-log-path=/home/logs/nginx/error.log \ --http-log-path=/home/logs/nginx/www_logs/web_access.log \ --pid-path=/run/nginx.pid \ --lock-path=/usr/local/nginx/lock/nginx.lock \ --with-cc-opt="-ljemalloc" \ --with-pcre-jit --with-ld-opt='-ljemalloc' --with-ld-opt="-Wl,-lpcre,-rpath,/usr/local/luajit/lib" \ --with-http_v2_module --with-http_sub_module \ --with-ipv6 \ --with-http_ssl_module \ --with-http_addition_module \ --with-stream \ --with-stream_ssl_module \ --with-stream_realip_module \ --with-stream_geoip_module \ --with-stream_ssl_preread_module \ --with-stream_sni \ --add-module=./modules/ngx_backtrace_module \ --add-module=./modules/ngx_debug_pool \ --add-module=./modules/ngx_debug_timer \ --add-module=./modules/ngx_http_concat_module \ --add-module=./modules/ngx_http_footer_filter_module \ --add-module=./modules/ngx_http_lua_module \ --add-module=./modules/ngx_http_proxy_connect_module \ --add-module=./modules/ngx_http_reqstat_module \ --add-module=./modules/ngx_http_slice_module \ --add-module=./modules/ngx_http_sysguard_module \ --add-module=./modules/ngx_http_trim_filter_module \ --add-module=./modules/ngx_http_upstream_check_module \ --add-module=./modules/ngx_http_upstream_consistent_hash_module \ --add-module=./modules/ngx_http_upstream_dynamic_module \ --add-module=./modules/ngx_http_upstream_dyups_module \ --add-module=./modules/ngx_http_upstream_keepalive_module \ --add-module=./modules/ngx_http_upstream_session_sticky_module \ --add-module=./modules/ngx_http_upstream_vnswrr_module \ --add-module=./modules/ngx_http_user_agent_module \ --add-module=./modules/ngx_multi_upstream_module \ --add-module=./modules/ngx_slab_stat \
页而报出来的错误是:
403 Forbidden
Sorry for the inconvenience. Please report this message and include the following information to us. Thank you very much!
实在找不出来原因 了,只要把ngx_http_lua_module 这个不编译 就正常访问。
从错误日志来看,访问 /usr/local/nginx/html/index.html 这个文件时没有权限报 403 错误,编译参数 --user=www --group=www
默认用户是 www,如配置文件里没有指定用户的话,需要www这个用户有访问权限,可以 ps 看一下 worker 进程所属用户,给对应用户访问权限。
root@VM-0-8-debian:/usr/local/nginx/html# ls -ls total 8 4 -rwxr-xr-x 1 root root 496 Aug 29 10:30 50x.html 4 -rwxr-xr-x 1 root root 555 Aug 29 10:30 index.html root@VM-0-8-debian:/usr/local/nginx/html# ps -aux | grep nginx root 41573 0.0 0.0 15580 1828 ? Ss 10:49 0:00 nginx: master process /usr/sbin/nginx www 41574 0.0 0.2 16392 5056 ? S 10:49 0:00 nginx: worker process root 41712 0.0 0.1 6332 2076 pts/0 S+ 10:50 0:00 grep nginx
/usr/local/nginx/html
这个目录 www 是否有执行权限呢,可以 su www 切换到 www 用户,实际 cat 一下 index.html 看是否能够读取?
好的,权限没有问题,我感觉是lua 兼容性的问题,就刚刚这个时间里,我也去安装了nginx 1.25.2 的版本,只编译了lua ,也是报同样的错误。 root@VM-0-8-debian:/usr/local/nginx# ls -ls | grep html 4 drwxr-xr-x 2 www www 4096 Aug 29 10:30 html root@VM-0-8-debian:/usr/local/nginx# cat html/index.html <!DOCTYPE html>
2023/08/29 11:37:41 [error] 53160#0: *1 open() "/usr/local/nginx/html/favicon.ico" failed (13: Permission denied)
好的,权限没有问题,我感觉是lua 兼容性的问题,就刚刚这个时间里,我也去安装了nginx 1.25.2 的版本,只编译了lua ,也是报同样的错误。 root@VM-0-8-debian:/usr/local/nginx# ls -ls | grep html 4 drwxr-xr-x 2 www www 4096 Aug 29 10:30 html root@VM-0-8-debian:/usr/local/nginx# cat html/index.html
Welcome to tengine!
cat html/index.html 之前先执行一下 su www
,切换一下用户,从报错来看,似乎跟lua没什么关系,可以贴下完整的nginx conf么
我的www 账号是 groupadd -g 128 -r www && useradd -s /sbin/nologin -u 128 -r -g www www 配置只有这个,没有给账号用户. 可以的,以下nginx.conf, 配置文件user www 也配置了,使用nobody 也试过,另外如果我不启用lua 这个编译,所有都是可以正常使用与访问的,但是如果我的配置在编译时增加了lua 功能就不可以了。 lua 库安装:lua-resty-core,lua-resty-lrucache。并且 给有www 权限 与755 整个/usr/local/nginx/lib 目前
user www;
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#error_log "pipe:rollback logs/error_log interval=1d baknum=7 maxsize=2G";
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include 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 logs/access.log main;
#access_log "pipe:rollback logs/access_log interval=1d baknum=7 maxsize=2G" main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
lua_package_path "/usr/local/nginx/lib/lua/?.lua;;";
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
#access_log "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G" main;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# pass the Dubbo rpc to Dubbo provider server listening on 127.0.0.1:20880
#
#location /dubbo {
# dubbo_pass_all_headers on;
# dubbo_pass_set args $args;
# dubbo_pass_set uri $uri;
# dubbo_pass_set method $request_method;
#
# dubbo_pass org.apache.dubbo.samples.tengine.DemoService 0.0.0 tengineDubbo dubbo_backend;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# upstream for Dubbo rpc to Dubbo provider server listening on 127.0.0.1:20880
#
#upstream dubbo_backend {
# multi 1;
# server 127.0.0.1:20880;
#}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
sudo -u www cat /usr/local/nginx/html/index.html
执行这个命令能显示文件内容么
root@VM-0-8-debian:/usr/local/nginx/config# sudo -u www cat /usr/local/nginx/html/index.html
cat: /usr/local/nginx/html/index.html: Permission denied
没有,但是为什么我给了www:www 的权限 了,与755 的权限都是提示没有权限呢?这个错误 ,我应该如何修改?
root@VM-0-8-debian:/usr/local/nginx/config# sudo -u www cat /usr/local/nginx/html/index.html
cat: /usr/local/nginx/html/index.html: Permission denied
没有,但是为什么我给了www:www 的权限 了,与755 的权限都是提示没有权限呢?这个错误 ,我应该如何修改?
sudo -u www ls -l /
sudo -u www ls -l /usr
sudo -u www ls -l /usr/local/
sudo -u www ls -l /usr/local/nginx
...
每一层都 ls 一下看下哪一层有权限问题
但是让我很疑惑的一点,就是我不编译 加载lua 模块时,为什么会是正常的呢? 已查实,就是这权限的问题,
但是让我很疑惑的一点,就是我不编译 加载lua 模块时,为什么会是正常的呢? 已查实,就是这权限的问题,
不编译 lua 模块的时候,worker 进程同样是 www 用户启动的么,如果是 www 用户启动的,目录没有权限读取,是系统的限制,不会访问成功的。
可以用不编译 lua 的方式启动,再看下 worker 进程的启动用户,以及用这个用户再去 cat 文件是否有权限。只有目录/文件权限不同,或者启动worker进程的用户不同两种可能
非常感谢!已完全测试好!就是属主所属的权限问题, 感谢!
info: debian 12 tengine3.0 luajit2 是git clone lua-resty-core ,lua-resty-lrucache 同样是git clone
安装编译 --add-module=./modules/lua-nginx-module 编译与安装都正常通过,并没有报错。 并且有安装 lua-resty-core,lua-resty-lrucache 的lua 库,在nginx.conf 里面引入配置,lua_package_path "/usr/local/nginx/lib/lua/?.lua;;"; nginx.conf 是默认的配置,配置有增加引入lua ,与server 里面的localtion 的增加lua 测试 : location /hello {
重启服务之后,使用ip 访问 x.x.x.x/hello 便 是正常可以访问到hello .lua 但是使用ip 访问时,便报错,权限403 的错误 ,日志提示没有权限 ,但是默认html 与lua 库都 尝试 过给权限 都 不可以,
同时有测试过,编译同样的配置,但是不编译 lua 支持 ,所有访问都是正常。 检查过其它的问题,还请帮忙测试 一下 ./configure --prefix=/usr/local/nginx \ --user=www --group=www \ --sbin-path=/usr/sbin/nginx \ --conf-path=/usr/local/nginx/config/nginx.conf \ --error-log-path=/home/logs/nginx/error.log \ --http-log-path=/home/logs/nginx/www_logs/web_access.log \ --pid-path=/run/nginx.pid \ --lock-path=/usr/local/nginx/lock/nginx.lock \ --with-cc-opt="-ljemalloc" \ --with-pcre-jit --with-ld-opt='-ljemalloc' --with-ld-opt="-Wl,-lpcre,-rpath,/usr/local/luajit/lib" \ --with-http_v2_module --with-http_sub_module \ --with-http_gunzip_module \ --with-http_realip_module --with-http_flv_module \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --with-http_secure_link_module \ --with-http_degradation_module \ --with-http_image_filter_module \ --with-http_ssl_module \ --http-proxy-temp-path=/usr/local/nginx/proxy_temp \ --http-fastcgi-temp-path=/usr/local/nginx/fastcgi_temp \ --http-uwsgi-temp-path=/usr/local/nginx/uwsgi_temp \ --http-scgi-temp-path=/usr/local/nginx/scgi_temp \ --with-http_stub_status_module \ --with-http_image_filter_module \ --with-http_geoip_module \ --with-http_geoip_module=dynamic \ --with-http_slice_module \ --with-http_secure_link_module \ --with-http_addition_module \ --with-http_auth_request_module \ --with-http_random_index_module \ --with-http_degradation_module \ --with-http_dav_module \ --with-http_flv_module \ --with-http_mp4_module \ --with-stream \ --with-stream_ssl_module \ --with-stream_realip_module \ --with-stream_geoip_module \ --without-http_upstream_keepalive_module \ --add-module=/mnt/ngx_brotli-master \ --add-module=/mnt/ngx_http_geoip2_module \ --add-module=./modules/lua-nginx-module \ --add-module=./modules/ngx_http_concat_module \ --add-module=./modules/ngx_http_slice_module \ --add-module=./modules/ngx_http_upstream_consistent_hash_module \ --add-module=./modules/ngx_http_upstream_dynamic_module \ --add-module=./modules/ngx_http_upstream_keepalive_module \ --add-module=./modules/ngx_http_proxy_connect_module \ --add-module=./modules/ngx_http_reqstat_module \ --add-module=./modules/ngx_http_upstream_check_module \ --add-module=./modules/ngx_http_upstream_session_sticky_module \ --add-module=./modules/ngx_http_user_agent_module \ --add-module=./modules/ngx_http_sysguard_module \ --add-module=./modules/ngx_http_trim_filter_module \ --add-module=./modules/ngx_http_upstream_vnswrr_module \ --add-module=./modules/ngx_multi_upstream_module \ --add-module=./modules/ngx_slab_stat \ --add-module=./modules/ngx_http_footer_filter_module