nginx 常见问题总结

2019-12-19  本文已影响0人  _大叔_

nginx 允许访问其他目录下的文件

        location /log/ {
            add_header Content-Type "text/plain;charset=UTF-8";
            # 被访问日志 5s 会刷新一次,建议谷浏览器看日志,其他浏览器看日志 怕 刷新后会回到顶部
            add_header Refresh 5;
            alias /usr/local/dev/logs/;
        }

alias 指定的路径是 location 的别名,不管 location 的值怎么写,资源的 真实路径都是 alias 指定的路径

nginx location 中 proxy_pass 末尾带/ 和 不带/

今天在配置nginx中遇到一个问题,想要让前端以如下方式访问

# 想让前端访问的url
http://ip:port/api/hyq/user/login
# nginx 配置
location /api/hyq/ {
    proxy_pass   http://127.0.0.1:8302;
    access_log  logs/hyq.log  main;
}

理想的是想让 内部代理到 http://127.0.0.1:8302/user/login
实际代理到了 http://127.0.0.1:8302/api/hyq/user/login

我在项目中打印出地址截取到的是

api/hyq/user/login

于是看到了一篇博客可以如下方式配置nginx

location /api/hyq/ {
    proxy_pass   http://127.0.0.1:8302/;
    access_log  logs/hyq.log  main;
}

ok 搞定。
也就是说 proxy_pass 路径后不带 /,会连带location所匹配到的路径一起访问 ( http://127.0.0.1:8302/api/hyq/user/login ),带 / 则会忽略location所匹配的路径访问 ( http://127.0.0.1:8302/user/login )。

上一张解决问题的图,感谢大佬分享

nginx http 转 https post请求变成get

http 跳转

    server {
        listen 80;
        server_name www.xxxxxx.cn xxxxxx.cn;   
        return 307 https://$host$request_uri;
    }

把 rewrite ^(.*) https://$server_name$1 permanent; 这句换掉
换成 return 307 https://$host$request_uri; 这句话就可以解决

nginx 启动80端口可以telnet通,却不显示页面

今天意外的情况,导致服务器重启,重启后启动nginx访问页面的时候,页面一直在load。
查了很多原因,发现 nginx 里得 error.log 一直输出如下:

2021/01/29 18:18:23 [alert] 1606#0: worker process 1852 exited on signal 11
ngx_http_fastdfs_process_init pid=1853

网上找到的解决办法输入如下:

/etc/init.d/fdfs_storaged start
/etc/init.d/fdfs_trackerd start

就是把 fdfs 相关服务进行启动。

上一篇下一篇

猜你喜欢

热点阅读