找到
5
篇与
Nginx
相关的结果
-
编译安装带 Brotli 压缩的 Nginx 安装依赖 apt install dpkg-dev curl gnupg2 build-essential zlib1g-dev libpcre3 libpcre3-dev unzip cmake -y下载编译源码 添加nginx源码库 添加 Nginx 密钥: curl -L https://nginx.org/keys/nginx_signing.key | apt-key add -添加密钥后,使用以下命令添加 Nginx 存储库: vim /etc/apt/sources.list.d/nginx.list添加如下内容 deb http://nginx.org/packages/ubuntu/ focal nginx deb-src http://nginx.org/packages/ubuntu/ focal nginx更新存储库 apt update -y 下载nginx Brotli 源文件 目录文件最好保持一致,在后续编译配置文件修改部分需要文件路径正确 cd /usr/local/src apt source nginx安装编译nginx所需要的文件 apt build-dep nginx -y从github下载 Brotli 源代码: git clone --recursive https://github.com/google/ngx_brotli.git 修改编译配置文件 修改Nginx 源并编辑 debian 规则文件添加 Brotli模块 : cd /usr/local/src/nginx-*/ vim debian/rules添加位置不同位置可能有些许不同,这里需要注意模块路径,也就是github下载 Brotli 源代码存储路径,如果位置不对需要自行修改 1.26.1版本 image-20240703160843201图片 1.22.1版本 其他版本添加位置也可能会有不同 --add-module=/usr/local/src/ngx_brotli 编译文件 使用以下命令编译并构建具有 ngx_brotli 支持的 nginx 包: dpkg-buildpackage -b -uc -us在编译时如果出现以下报错: /usr/bin/ld: cannot find -lbrotlienc /usr/bin/ld: cannot find -lbrotlicommon collect2: error: ld returned 1 exit status make[2]: *** [objs/Makefile:383: objs/nginx] Error 1 make[2]: Leaving directory '/usr/local/src/nginx-1.26.1/debian/build-nginx' make[1]: *** [Makefile:10: build] Error 2 make[1]: Leaving directory '/usr/local/src/nginx-1.26.1/debian/build-nginx' make: *** [debian/rules:62: build-arch.nginx] Error 2 dpkg-buildpackage: error: debian/rules build subprocess returned exit status 2image-20240703162706876图片 只需要编译编译一下brotli子模块即可 cd /usr/local/src/ngx_brotli/deps/brotli mkdir out cd out cmake -DCMAKE_BUILD_TYPE=Release .. makebrotli子模块编译完成后再执行编译命令 cd /usr/local/src/nginx-* dpkg-buildpackage -b -uc -us 若没有新的报错出现,在/usr/local/src就有可安装的deb软件包 安装 Nginx 并启用 Brotli 支持 安装软件包 cd /usr/local/src/ dpkg -i *.deb若软件无法安装,出现如下报错 image-20240703163851175图片 新nginx和原有的冲突,现在安装的nginx再重新安装即可 apt remove nginx apt --fix-broken install 启用Brotli 安装所有软件包后,编辑 Nginx 主配置文件并启用 Brotli 支持: vim /etc/nginx/nginx.conf在 http{ 下面添加以下行 brotli on; brotli_comp_level 6; brotli_static on; brotli_types text/plain text/css application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript image/x-icon image/vnd.microsoft.icon image/bmp image/svg+xml;重新启动 Nginx 服务: systemctl restart nginx 验证 Nginx 和 Brotli curl -H 'Accept-Encoding: br' -I http://localhost如果一切正常,您将看到 brotli 支持的结果“content-encoding:br”,如下所示: 禁用nginx更新 将 nginx 标记为保持: sudo apt-mark hold nginx查看所有被标记为“保持”的包: apt-mark showhold取消“保持”状态,允许更新: sudo apt-mark unhold nginx -
远程访问本地搭建的NextCloud(反向代理网页) 前言 在没有公网IP的情况下,很难从其他网络环境中直接访问到部署在本地的web服务,这时候就需要通过内网穿透的方式来实现。而对于内网穿透,有着很多的实现方式,最为常见的就是通过云服务器搭建和使用别人提供的服务 自建内网穿透服务 需要有自己的云服务器 服务端和客户端都需要下载frp,下载地址 => Releases · fatedier/frp (github.com) 服务端配置 编辑frps.ini文件 [common] # frp监听的端口,默认是7000,可以改成其他的 bind_port = 7000 # 授权码,需要与客户端一致,请改为更复杂的 token = aaaaaa # frp管理后台端口,请按自己需求更改 dashboard_port = 7500 # frp管理后台用户名和密码,请改成自己的 dashboard_user = Mango dashboard_pwd = 12345678 enable_prometheus = true # http 端口可更改 vhost_http_port = 8090 # https 端口可更改 vhost_https_port= 8081 #vhost_https_port = 8080 # frp日志配置 路径根据自己需求更改 log_file = /root/frp/.frps.log log_level = error log_max_days = 3 配置systemd守护进程便于管理 vim /etc/systemd/system/frps.service输入以下内容并保存 [Unit] Description=fraps service After=network.target syslog.target Wants=network.target [Service] Type=simple #启动服务的命令(此处写你的frps的实际安装目录) ExecStart=/root/frp/frps -c /root/frp/frps.ini [Install] WantedBy=multi-user.target启动frps并设置开机自启 systemctl daemon-reload systemctl start frps systemctl enable frps 配置nginx 如果没有nginx先安装 apt update apt install nginx编辑配置文件 vim /etc/nginx/sites-enabled/nextcloud # 也可以不新建nextcloud文件,直接配置默认文件 vim /etc/nginx/sites-enabled/defaultnginx代理frps配置文件参考 可配置SSL开启https server{ listen 80; listen 443 ssl; #对应你的域名 server_name xxx.xxx.cn; # https 域名证书相关配置 # ssl证书存储路径,根据个人存储路径设置,我的被存在了 /etc/nginx/ssl/ 文件夹下面 ssl_certificate /etc/nginx/ssl/xxx.mstzf.cn.pem; ssl_certificate_key /etc/nginx/ssl/xxx.mstzf.cn.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; location / { proxy_pass http://127.0.0.1:8090; # 映射的frp服务端frps.ini的 vhost_http_port端口 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_max_temp_file_size 0; proxy_redirect off; proxy_read_timeout 240s; client_max_body_size 0; } } }重启nginx服务 systemctl restart nginx 客户端配置 编辑frpc.ini文件 [common] # 远程服务器地址 # 替换为自己的域名 server_addr = 0.0.0.0 # 远程服务器监听端口 # 和服务端 bind_port 相同 server_port = 7000 # 连接密钥 # 必须和服务端配置相同 token = aaaaaa # 配置日志文件 # 日志级别:trace, debug, info, warn, error # 日志保存路径根据需求修改 log_file = /home/zh/frp/log/.log log_level = error log_max_days = 3 # 客户端管理配置 admin_addr = 127.0.0.1 admin_port = 7500 admin_user = Mango admin_pwd = 12345678 # 代理端口配置 模板 # [内容随意 如ssh] # type = 连接类型 如 tcp # local_ip = 127.0.0.1 # local_port = 22 本地需要代理的端口 # remote_port = 2222 将本地22端口代理为远程的2222端口 # 该配置下,可用远程 ip 的 2222 端口访问到本地的 22 端口服务 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 2222 [rdp] type=tcp local_ip = 127.0.0.1 local_port=3389 remote_port=3389 [nx] type=tcp local_ip=127.0.0.1 local_port=4000 remote_port=4000 [web] type = http local_ip = 127.0.0.1 local_port = 80 #subdomain = root # 绑定的域名 和nginx配置下的 server_name 相同 custom_domains = xxx.mstzf.cn 为frpc配置systemd守护进程便于管理 编辑文件 vim /etc/systemd/system/frpc.service输入以下内容 [Unit] Description=Frp Client Service After=network.target [Service] Type=simple User=root Restart=on-failure RestartSec=5s # 根据frp所在位置设置 ExecStart=/home/zh/frp/frpc -c /home/zh/frp/frpc.ini LimitNOFILE=1048576 [Install] WantedBy=multi-user.target启动frpc并配置开机自启 systemctl daemon-reload systemctl start frpc systemctl enable frpc 使用第三方服务 我个人使用的是Sakura Frp,有能够满足基本需求的免费套餐,vip套餐也很划算,已经能够满足我的基本需求 {% link SakuraFrp,SakuraFrp,https://www.natfrp.com/ %} 注册账号 完善个人信息 如果有建站需求想要使用国内站点,需要完成实名认证和有备案域名,否则只能使用国外的站点来搭建 在客户端安装frp软件 这一部分官网中已经介绍得十分的详细,这里只有几个关键命令,具体可到官网查看 {% link frpc 基本使用指南,SakuraFrp 帮助文档,https://doc.natfrp.com/frpc/usage.html %} 确认系统架构 uname -m获取软件链接 {% link 软件下载,SakuraFrp,https://www.natfrp.com/tunnel/download %} 安装 cd /usr/local/bin wget -O frpc <下载地址> chmod 755 frpc 配置守护进程(systemd) 具体操作可去指导文档查看 {% link Systemd配置frpc服务,SakuraFrp帮助文档,https://doc.natfrp.com/frpc/service/systemd.html %} 添加工作目录 mkdir -p /usr/local/etc/natfrp编辑配置文件 vim /etc/systemd/system/frpc@.service输入配置内容 [Unit] Description=SakuraFrp Service After=network.target [Service] Type=idle #DynamicUser=yes Restart=on-failure RestartSec=60s ExecStart=/usr/local/bin/frpc -f %i WorkingDirectory=/usr/local/etc/natfrp [Install] WantedBy=multi-user.target重载systemd systemctl daemon-reload 新建隧道 对于远程访问网页的,需要选择可建站的节点;至于选择国内还是国外要先看自己的域名是否已经备过案,备案过的域名可以使用国内节点,国内节点在各方面都要优于国外。如果没有备案域名,就只能使用国外节点。 image-20231114121753361图片 image-20231114121907030图片 端口根据本地网页端口配置 在绑定域名和自动HTTPS中一定要输入自己需要使用的域名 配置DSN解析 动画图片 复制节点域名,到域名服务商处配置DNS解析,将自己的域名CNAME到复制的节点域名上 记录类型选择CNAME 记录值选择选择节点所绑定域名 配置SSL证书 {% link 配置frpc使用的SSL证书,SakuraFrp帮助文档,https://doc.natfrp.com/frpc/ssl.html %} 从服务商下载域名SSL证书选择Nginx,将证书重命名为 将其中 扩展名为pem的直接将扩展名修改为crt 并只保留域名和扩展名 即 如 nextcloud.mstzf.cn.key 的形式 将证书移动到之前配置的工作目录中 /usr/local/etc/natfrp 启动隧道 systemctl <start|stop> <Unit名称> # <Unit名称> 即下图 -f 之后 红色框部分 -
NextCloud无法上传大文件问题解决 NextCloud无法上传大文件问题解决 限制NextCloud上传大文件的主要因素有两个,一个就是上传文件的大小,以及文件上传超时时间。 修改PHP文件上传限制 查看PHP配置文件路径 php -i |grep php.iniimage-20230524173357726图片 修改文件中的upload_max_filesize限制上传文件大小可根据自己的需求设置,我这里设置了16G upload_max_filesize = 16Gimage-20230524173638063图片 修改文件上传超时时间max_execution_time以及页面数据接收超时时间max_input_time max_execution_time = 3600 max_input_time = 600image-20230524174058635图片 修改post表单接收最大值post_max_size post_max_size = 16Gimage-20230524174302142图片 修改Nginx文件上传限制 修改Nginx配置文件/etc/nginx/nginx.conf 在http或者location下添加 client_max_body_size 0;0表示无限制 image-20230524174801439图片 内网穿透多Nginx配置 如果做内网穿透使用HTTPS并且使用了多个Nginx,每个Nginx下都要做文件上传限制配置 -
nginx做web代理偶尔网页出现PHP Version界面解决办法 出现场景 之前在树莓派上利用Nginx和NextCloud搭建了一个自用的网盘,NextCloud需要PHP作为运行环境,但是时不时会出现网页无法正常显示的情况,之前一直以为是通过frp做内网穿透时和nginx监听的80端口冲突 解决办法 究其原因是因为安装PHP时附带下载了Apache2,apache2启动后占用了80端口导致Nginx无法正常启动 查看80端口占用 # lsof -i:80 停止apache2 # systemctl disable apache2 # systemctl stop apache2 重启Nginx # systemctl restart nginx 步骤截图图片 -
搭建私人云盘 准备 硬件: 树莓派4B 机械硬盘 软件: Nginx PHP MySql nextcloud 选用树莓派是由于手头上刚好有一块树莓派,为了不让他吃灰;实际上可以选择旧电脑,或者云服务器。 软件安装 安装nginx $sudo apt install nginx -y安装完成后在浏览器中输入树莓派的IP地址,可以看到如下界面 image-20220219132349742图片 安装PHP7.4 目前最新的PHP版本好像是7.4版本,也可以选择其他版本,将php7.4后面的7.4改成对应的版本哈就可以安装其他版本的PHP sudo apt install php7.4 php7.4-fpm php7.4-cli php7.4-curl php7.4-gd php7.4-cgi php7.4-xml php7.4-dom php7.4-zip php7.4-intl php7.4-mbstring php7.4-mysql -y安装并配置MySql $sudo apt install mariadb-server $sudo mysql_secure_installation此时系统会询问你:Enter current password for root (enter for none): ,按回车(enter)键,因为第一次登陆是没有密码的。 然后会询问你: Set root password? —— 按 y ,进行root帐号的密码设置 此时,会提示 New password ,在此输入你的MySQL密码,请牢记这个密码,输入完成按回车,会提示re-enter new password此时再重复输入密码,回车即可。 然后,询问你 Remove anonymous users ,按 y 。 然后,询问你 Disallow root login remotely ,按 y 。 然后,询问你 Remove test database and access to it ,按 y 。 然后,询问你 Reload privilege tables now ,按 y 。 最后,您将看到消息 All done! 和 Thanks for using MariaDB! 。表示已经设置完成了。 sudo mysql -u root -p #输入密码后: # 创建数据库 CREATE DATABASE IF NOT EXISTS nextcloud DEFAULT CHARACTER SET UTF8 COLLATE utf8_general_ci; # 创建用户 GRANT ALL PRIVILEGES ON nextcloud.* to '用户名'@'127.0.0.1' identified by '密码'; # 刷新数据库 FLUSH PRIVILEGES; 配置软件 配置Nginx $sudo vim /etc/nginx/sites-available/defaultnginx默认的网站代理地址是在var/www/html下,可以保留使用原来的,也可以修改到自己新建的地址下。如果选择新建不要忘记去确保指定的路径下的文件夹要存在。像我的就要在/var下新建owncloud文件夹。sudo mkdir /var/owncloud image-20220219194922636图片 location / { index index.html index.htm index.php default.html default.htm default.php; if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php){ rewrite (.*) $1/index.php; } if (!-f $request_filename){ rewrite (.*) /index.php; } }去掉location ~ \ .php上的注释 image-20220219195040903图片 给根目录权限 # 给权限 sudo chmod -R 755 /var/owncloud sudo chown -R www-data:www-data /var/owncloud #重启nginx sudo systemctl restart nginx在刚刚网站指定的目录下新建PHP测试文件 $sudo vim /var/owncloud/index.php #输入以下代码 <?php phpinfo(); ?>重新启动Nginx:$sudo systemctl restart nginx 可能报错: “Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.” 多检查修改过的地方,是否有单词错误,或者是否有分号,括号是否对应... Nginx代理php成功后,在浏览器输入树莓派IP地址后能看到如下界面说明配置成功。 image-20220219141927075图片 安装nextCloud 进入刚刚配置的代理目录:cd /var/nextcloud 将刚刚的测试文件删除: sudo rm * 下载nextcloud) sudo wget https://download.nextcloud.com/server/releases/nextcloud-23.0.2.tar.bz2这是目前最新版本,请自己到官网查看版本 image-20220219192510883图片 # 解压缩: sudo tar -jxvf nextcloud-23.0.2.tar.bz2 nextcloud # 复制出来 sudo cp -rf nextcloud/* /var/owncloud再访问IP地址就可以看到NextCloud的运行界面了 image-20220219200624789图片