Nginx

分类下相关文章

Nginx 添加 Access-Control-Allow-Origin 头,允许跨域请求

No 'Access-Control-Allow-Origin' header 想从 js 前端实现拉取一个服务端的 markdown 文件,然后在浏览器端渲染成 HTML。 但是本地开发环境调试时报错: Access to XMLHttpRequest at 'https://www.sunzhongwei.com/some_file.md' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on th ...

阅读全文...

Nginx 转发 HTTP 及 WebSocket 请求到另一个域名的配置

注意!!! 虽然这个配置能达到预期的效果,但是这个配置有 301 问题,暂时没有找到问题根源。 还是对 Nginx 的具体规则不了解。alias,rewrite, redirect 得重新学习下。 需求场景 通过修改本地 hosts 文件,将目标域名的 IP 指向我的服务器,转发所有请求。 同时, 拦截指定 API 接口,返回特定的内容。参考了好多年之前写的 Nginx 模拟 Backbone 请求的 JSON 接口 修改部分 html,js 以达到修改界面的效果 中转 websocket 请求 存在的问题 几个 alias 用的不对,会导致请求 301 到带斜杠后缀的链接。但好在能正 ...

阅读全文...

systemd timer 未启用,导致 certbot 证书自动续期失败

春节期间收到了公司服务器上一个域名证书快要过期的提示邮件。 今天第一天开工,正好处理一下。 很奇怪,这个服务器上基于 letsencrypt 生成的免费证书,总是不自动续期。 日志地址 ls /var/log/letsencrypt 查看了一下,都是手动操作的日志,没有自动续期产生的日志。说明计划任务没有自动执行? 而我在另一台自动续期执行正常的服务器上看,自动续期是会产生日志的。 所以,问题的根源,还是命令没有定期执行。 手动续期 先手动解决,然后再排查问题 > certbot renew Saving debug log to /var/log/letsencrypt/letsen ...

阅读全文...

Nginx 301 重定向原网址到新地址

需求背景 我有一个现存的服务,地址为: https://www.sunzhongwei.com/go/proportion-calculator 而我又重构了一套,新的网址为: https://www.sunzhongwei.com/tools2/proportion-calculator 我想将原来地址的访问流量 301 重定向到新网址。 Nginx 规则优先级 参考我之前整理的 nginx location 常见匹配规则 Nginx Location 规则并不是按照书写顺序进行优先匹配的。 而是按照规则优先级进行匹配。 所以这里使用 = 等号,来提高 301 规则的优先级。 Nginx ...

阅读全文...

EMQX MQTT 服务配置 WSS 证书

为何要配置 WSS 证书 原本用 EMQX 内置的 8083 端口,就可以实现 mqtt over websocket。 例如,地址: ws://www.sunzhongwei.com:8083/mqtt 但是,由于我又需要在微信小程序里使用 mqtt over websocket,而微信小程序只允许使用 WSS 和 HTTPS 协议。所以不得不配置证书。 WSS 与 WS 的区别 WSS 全称是 Web Socket Secure, 即 WebSocket 的加密版本。类似与 HTTPS 之于 HTTP。 WSS 与 WS 类似于 HTTPS 和 HTTP,不同之处在于是不同的通信协议,都 ...

阅读全文...

nginx 中禁用 css, js,图片等静态资源的日志记录

对于网站的 nginx 日志,三分之二以上是 css js 及图片等静态文件的访问日志。 禁用静态文件日志的好处 提升 IO 性能,避免无意义的写入磁盘操作 便于实时查看 nginx 日志 禁用方法 修改全局 nginx.conf 文件 log_format compression '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" &qu ...

阅读全文...

ubuntu 20.04 禁止 apache 开机自启动

ubuntu 20.04 server 重启之后,发现 nginx 没有自启动。 而手动启动 nginx,报错,显示 80 端口被占用。 $ sudo nginx [sudo] password for xxx: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) 排查 无疑,很大概率系统预装了 apache。可能系统重启时,apache 先于 nginx 启动, ...

阅读全文...

certbot 安装证书报错:The requested nginx plugin does not appear to be installed

系统环境 Ubuntu 20.04 报错信息 # certbot --nginx Saving debug log to /var/log/letsencrypt/letsencrypt.log The requested nginx plugin does not appear to be installed 解决方法 sudo apt install python3-certbot-nginx 然后重新执行 certbot --nginx ...

阅读全文...

Nginx 多配置文件放哪个目录好,sites-available/enabled 与 conf.d 对比

从 nginx.conf 的 http block 配置来看,ubuntu 20.04 apt 安装的 nginx 默认引入了两个配置目录: include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; sites-available & sites-enabled 以前就知道,但是 conf.d 还是第一次注意到。 之所以会注意到 conf.d 是因为在 stackoverflow 上看到一个讨论 https://serverfault.com/questions/527630/difference-in ...

阅读全文...

ubuntu 20.04 apt install nginx-core/light/full 的区别

在新购的服务器系统 Ubuntu 20.04 上部署生产环境。想通过 apt 安装 nginx,发现提示中有N个选项: $ nginx Command 'nginx' not found, but can be installed with: apt install nginx-core # version 1.18.0-0ubuntu1, or apt install nginx-extras # version 1.18.0-0ubuntu1 apt install nginx-full # version 1.18.0-0ubuntu1 apt install ngin ...

阅读全文...

设置 Nginx 规则以屏蔽指定 User Agent 的网站爬虫

晚上我的一个 wordpress 网站再一次被可恶的爬虫爬挂了。。。 对方疯狂的爬取网页,且瞬间并发无数个请求,丝毫不考虑我这孱弱的阿里云低配服务器的小身板能否承受住。不出意外,我的网站挂掉了。。。 没办法,必须得处理一下。 看了一下 nginx 日志中这些爬虫的请求记录: 每 10 个请求一换 IP 请求头都为 "Scrapy/1.7.3 (+https://scrapy.org)" 所以通过 IP 规则来屏蔽是不可能了,可以简单地用 User Agent 匹配规则的方式来屏蔽这些爬虫。 Nginx 配置 顺便把 Yisou 的爬虫屏蔽了。 if ($http_use ...

阅读全文...

certbot 自动配置 HTTPS 证书时,指定 nginx 配置文件路径

今天在一台 CentOS 7.3 的服务器上配置新网站域名的 HTTPS 证书,Web Server 用的 Nginx。 certbot 提示 nginx.conf 文件找不到。 # certbot --nginx Saving debug log to /var/log/letsencrypt/letsencrypt.log Error while running nginx -c /etc/nginx/nginx.conf -t. nginx: [emerg] open() "/etc/nginx/nginx.conf" failed (2: No such file ...

阅读全文...

kangle 的基本配置

查看 kangle 的版本号 /vhs/kangle/bin/kangle -v kangle/3.5.8(free) build with support: ipv6 ssl[SN] large-file http2 disk-cache sqlite-disk-index ksapi-filter pcre version: 7.8 2008-09-05 openssl version: OpenSSL 1.0.1e-fips 11 Feb 2013 kangle 设置开机自启动 vim /etc/rc.local 在文件最后缀上 /vhs/kangle/bin/kangle kang ...

阅读全文...

查找 apache 配置文件的位置

首先确认 apache 进程的启动目录 ps axuw | grep apache /www/server/apache/bin/httpd -k start 执行: /www/server/apache/bin/httpd -V Server compiled with.... -D SERVER_CONFIG_FILE="conf/httpd.conf" 查看 apache 主配置文件 vim /www/server/apache/conf/httpd.conf 找到配置 IncludeOptional /www/server/panel/vhost/apac ...

阅读全文...

使用 AWK 格式化 Nginx 日志

awk 命令最让人头疼的地方是,只要一个月不用,立马忘掉命令参数。 例如,我想查看访问了接口 A 的所有请求的手机品牌。 grep api_a /var/log/nginx/sunzhongwei_access.log | awk '{print $4, $7, $14, $15, $16, $17}' [25/May/2019:08:50:20 /api/api_a Android 8.0.0; MIX Build/OPR1.170623.032; [25/May/2019:08:57:52 /api/api_a Android 8.1.0; MI 8 [25/May/2019:08:58: ...

阅读全文...