首页
碎碎念
东邻西舍
本站信息
前来吐槽
Search
1
openwrt系统上安装第三方插件
11,242 阅读
2
ubuntu下zerotier的基本使用教程
6,125 阅读
3
给小米R3G更换系统:从padavan刷成openwrt
2,510 阅读
4
为padavan安装SSL证书
1,389 阅读
5
openwrt无线中继功能:实现不插网线就能上网
1,377 阅读
学习点滴
Java
Web前端
Linux
踩坑实录
折腾搞机
关于建站
只言片语
登录
Search
标签搜索
Linux
建站
踩坑实录
Ubuntu
Java
MySQL
CSS
折腾搞机
HTML
SQL
MyBatis
Nginx
只言片语
树莓派
OpenWrt
路由器
SSL
Maven
Git
随笔
知识分子没文化
累计撰写
78
篇文章
累计收到
63
条评论
首页
栏目
学习点滴
Java
Web前端
Linux
踩坑实录
折腾搞机
关于建站
只言片语
页面
碎碎念
东邻西舍
本站信息
前来吐槽
搜索到
5
篇与
Nginx
的结果
2021-12-11
常用的一些Nginx配置
[Meting] [Music server="netease" id="27483168" type="song"/] [/Meting] 目录: 1、监听端口 2、日志功能 2.1、访问日志 2.2、错误日志 3、配置域名 4、静态资源 5、重定向 5.1、网站根目录重定向 5.2、特定目录重定向 6、反向代理 7、负载均衡 8、SSL配置 1、监听端口 server { # 用于HTTP协议 listen 80; # 用于HTTPS协议 listen 443 ssl; # 用于HTTP2 listen 443 ssl http2; # 使用IPv6监听80端口 listen [::]:80; # 仅使用IPv6 listen [::]:80 ipv6only=on; } 2、日志功能 Nginx的日志分为两种:access_log (访问日志)和 error_log(错误日志)。 对于日志的格式,Nginx提供了一种名为 combine 的格式,如果没有明确指定日志格式则默认使用该格式。 如果不使用 combine 格式的话,可以使用 log_format 指令来自定义,其具体用法参考Nginx日志配置详解或者官方文档:HttpLog模块-Nginx中文文档。 2.1、访问日志 访问日志主要记录客户端的请求,客户端向Nginx服务器发起的每一次请求都记录在这里。客户端IP,浏览器信息,referer,请求处理时间,请求URL等都可以在访问日志中得到。 server { # 访问日志文件的写入位置,相对或绝对路径 access_log /path/to/file.log; # 选择访问日志功能的开启(on)或关闭(off) access_log on; } 2.2、错误日志 错误日志记录服务器和请求处理过程中的错误信息。 server{ # 错误日志的写入位置 error_log logs/error.log error; # 错误日志的级别,分为 debug, info, notice, warn, error, crit, alert,emerg,其取值范围是按紧急程度从低到高排列 # 只有日志的错误级别等于或高于level指定的值才会写入错误日志中。默认值是error error_log file [level]; } 3、配置域名 server { # 监听domain.com server_name domain.com; # 监听多个域名 server_name domain.com www.domain.com; # 监听所有域名 server_name *.domain.com; # 监听所有顶级域名 server_name domain.*; # 监听未指定的主机名(比如侦听IP地址本身) server_name ""; } 4、静态资源 server { listen 80; server_name domain.com; location / { # 设置网站的根目录 root /path/to/website; } } 5、重定向 5.1、网站根目录重定向 server { listen 80; server_name www.domain.com; # 将 www.domain.com 进行301重定向,跳转至 http://domain.com$request_uri return 301 http://domain.com$request_uri; } 5.2、特定目录重定向 server { listen 80; server_name www.domain.com; # 将链接 http://www.domain.com/redirect-url 进行301重定向,跳转到http://otherdomain.com location /redirect-url { return 301 http://otherdomain.com; } } 如将 domain.com 永久重定向到 www.domain.com: server { listen 80; server_name domain.com; return 301 http://www.$host$request_uri; } 6、反向代理 反向代理 - 维基百科,自由的百科全书 (wikipedia.org) Reverse proxy - Wikipedia server { listen 80; server_name domain.com; # 对特定主机的3000端口进行反向代理 location / { proxy_pass http://0.0.0.0:3000; } } 7、负载均衡 负载均衡 - 维基百科,自由的百科全书 (wikipedia.org) Load balancing (computing) - Wikipedia upstream node_js { server 0.0.0.0:3000; server 0.0.0.0:4000; server 123.131.121.122; } server { listen 80; server_name domain.com; location / { proxy_pass http://node_js; } } 8、SSL配置 server { listen 443 ssl; server_name domain.com; ssl on; # 证书文件,格式不一定都是pem,还可能是其他格式 ssl_certificate /path/to/cert.pem; # 秘钥文件,格式不一定都是pem,还可能是其他格式 ssl_certificate_key /path/to/privatekey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_session_timeout 1h; ssl_session_cache shared:SSL:50m; add_header Strict-Transport-Security max-age=15768000; } # 将HTTP永久重定向到HTTPS server { listen 80; server_name domain.com; return 301 https://$host$request_uri; } 部分内容转载修改自: Nginx Cheatsheet (hashnode.dev) Nginx日志配置详解_biubiuli的博客-CSDN博客_nginx 日志配置
2021年12月11日
172 阅读
0 评论
0 点赞
2021-05-26
【踩坑实录】Nginx重新加载时出现警告:nginx: [warn] conflicting server name "www.langp.wang" on 0.0.0.0:80, ignored
[Meting] [Music server="netease" id="394653" type="song"/] [/Meting] 环境说明: 系统:ubuntu 20.04 nginx:1.18.0 问题再现: 修改nginx配置文件后,在执行nginx -s reload命令重新载入nginx服务时出现错误: nginx: [warn] conflicting server name "www.langp.wang" on 0.0.0.0:80, ignored nginx: [warn] conflicting server name "www.langp.wang" on 0.0.0.0:443, ignored 可以看到提示“conflicting server name”,即“服务器名称冲突”,而且是在“80”和“443”两个端口上都有的。 错误原因: 在nginx的每一个server配置中都有一个“server_name”配置项,nginx是用“server_name”来确定域名与对应网站的关联的。而当nginx中出现了两个相同的“server_name”时,重新加载时nginx服务时就会出现冲突了,就会产生警告信息。由于提示信息只是“warn”级别的,所以网站还是能正常访问到的,可是这个警告信息还是让人觉得很不爽。 解决方法: 经过排查,发现是在配置文件的目录下(/etc/nginx/sites-enabled)多出来了一个与原来的配置文件名称相同,但是名称后缀为“.save”的文件。这个文件中的所有信息与原来文件的所有内容相同,所以就出现了两个相同的”server_name“。 把这个文件删除掉之后,再次执行命令nginx -s reload就没有警告信息了。 至于这个文件的来源,个人猜测可能是由于用nano编辑器编辑文件时产生的缓存或者是nano编辑器被强制退出时保存的信息。
2021年05月26日
366 阅读
0 评论
0 点赞
2021-02-20
在一个Nginx服务器上实现多个网站的部署运行
[Meting] [Music server="netease" id="167651" type="song"/] [/Meting] 目录: 1.域名解析 2.添加nginx配置文件 3.添加网站 环境说明: Linux:ubuntu 20.04 Nginx:1.18 Mysql:8.0 PHP:7.3 服务器:阿里云服务器 对于一个服务器,理论上来说在上面可以运行无限多个网站。但是,现实中往往到考虑服务器的配置,当服务器要处理的事务太多的时候,也就忙不过来了。 接下来就是如何实现的问题。在Nginx下有两种思路可以实现这个目的: 一是只需要一个域名(一级域名或者二级域名都可以),做一次域名解析即可,将域名解析到服务器IP地址,用不同的端口来实现不同网站的服务,即用同一个域名 + 端口号的方式来访问相应的网站。这种方法实现起来比较简单,修改网站配置文件里的端口即可,要开启服务器的相应端口,但是访问起来就比较麻烦了,每次访问都得加上端口号,如果不加端口号,便默认访问80端口。用域名langp.wang来图示说明: 二是全部网站都用80端口来实现访问,但是需要多个域名(或者二级域名),这种方法实现起来不算太难,访问也很方便,输入域名即可访问对应的网站,因此这篇博客主要来介绍这种方法。这种方法用域名langp.wang来举例就是这样的: 我的顶级域名是langp.wang,这个域名挂的是我的博客网站,我用一个顶级域名下的test1.langp.wang和test2.langp.wang这两个二级域名来举例子,再到服务器上添加两个网站。 1.域名解析 在阿里云域名解析控制台中添加域名解析,可以是几个不同的顶级域名,也可以是一个顶级域名下的二级域名。记录值相同,均为同一个服务器ip地址。 2.添加nginx配置文件 进入配置文件所在的目录,我的是/etc/nginx/sites-enabled,分别创建两个配置文件 # 进入目录 cd /etc/nginx/sites-enabled # 创建test1和test2,配置文件可以随便命名 touch test1 test2 然后编辑这两个配置文件,test1的内容如下: # HTTP服务配置 server { listen 80; # test1.langp.wang改为你的域名 server_name test1.langp.wang; # 存放网站文件的根目录,根据自己的情况修改 root /var/www/html/test1; index index.html index.htm index.php; location / { try_files $uri $uri/ =404; } # 加入php的配置,使服务器可以处理php网页 location ~ \.php$ { #include snippets/fastcgi-php.conf; # 使用php-fpm(或其他unix套接字): fastcgi_pass unix:/run/php/php-fpm.sock; # 使用php-cgi(或其他tcp套接字): #fastcgi_pass 127.0.0.1:9000; # 设置脚本文件请求的路径 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 引入fastcgi的配置文件 include fastcgi_params; } } test2的内容与test1的内容也差不多,区别仅仅在于server_name与root这两个参数不同,server_name是指服务器名称,填写要访问网站的域名即可,root是该网站的根目录。 # HTTP服务配置 server { listen 80; # test2.langp.wang改为你的域名 server_name test2.langp.wang; # 存放网站文件的根目录,根据自己的情况修改 root /var/www/html/test2; index index.html index.htm index.php; location / { try_files $uri $uri/ =404; } # 加入php的配置,使服务器可以处理php网页 location ~ \.php$ { #include snippets/fastcgi-php.conf; # 使用php-fpm(或其他unix套接字): fastcgi_pass unix:/run/php/php-fpm.sock; # 使用php-cgi(或其他tcp套接字): #fastcgi_pass 127.0.0.1:9000; # 设置脚本文件请求的路径 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 引入fastcgi的配置文件 include fastcgi_params; } } 编辑完之后,重启nginx服务: sudo nginx -s reload 3.添加网站 在相应的网站根目录中(上一步配置文件里设置的root后面的目录)添加网站文件,添加完成后。访问对应的域名,你就会发现打开的是不同的网站了,说明配置成功。
2021年02月20日
429 阅读
0 评论
0 点赞
2021-01-26
为Nginx服务器安装SSL证书实现站点的HTTPS访问
[Meting] [Music server="netease" id="28798772" type="song"/] [/Meting] 目录: 1. 查看nginx是否支持SSL 2. 申请并下载SSL证书 3. 上传证书 4. 安装证书 5. 设置HTTPS强转 环境说明: Linux:ubuntu 20.0.4 nginx:1.18 首先,你得有域名的证书文件,如果还没有,就得要申请了,如果要求不高只要单域名证书的话,到购买域名的服务商那里就能免费申请到,本文以阿里云的单域名证书为例来进行说明。 1. 查看nginx是否支持SSL 使用命令查看nginx版本: nginx -V 查看输出结果,如果有显示--with-http_ssl_module,则说明支持安装SSL证书,如果没有显示,则需要重新下载nginx源码重新编译安装SSL模块。 2. 申请并下载SSL证书 一般对于个人用户来说,第三方机构颁发的免费DV证书即可满足要求,比如阿里云腾讯云都可以申请到为期一年的免费SSL证书(前提是在平台上买了域名)。要是对于信息安全有更高要求的用户或者企业来说,就得使用付费的SSL证书了。这里以阿里云的免费SSL证书为例说明: 首先登陆阿里云,前往阿里云SSL证书购买页面,按如图设置,使最后的价格为0: 点击购买,购买完成之后,自动跳转到SSL证书控制台,然后就可以为所购买的域名申请SSL证书了,申请过程很简单,照着提示做就可以,申请之后会提交审核,审核速度也很快,一般5分钟左右最长不超过10分钟就能审核成功。 完毕后,即可在SSL证书控制台下载SSL证书: 选择nginx,下载即可,记住下载的位置,等会上传时要用 3. 上传证书 先在服务器上创建一个放SSL证书的目录,这里以/etc/nginx/ssl为例,当然你也可以改成其他目录: # 创建目录 sudo mkdir /etc/nignx/ssl 然后将下载好的证书文件使用Ftp工具上传到这个文件夹,这里推荐用XSHELL,FileZilla等FTP工具,上传之后如图: 4. 安装证书 编辑网站的Nginx配置文件,我的目录是/etc/nginx/sites-enabled,这里根据自己的实际情况来换成自己的目录: sudo nano /etc/nginx/nginx.conf 在配置文件中定位到站点的配置信息,在其中添加以下server配置信息,并按照注释修改其中部分站点信息: #以下属性中,以ssl开头的属性表示与证书配置有关。 server { listen 80; #配置HTTPS的默认访问端口为443,如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。 listen 443 ssl; #如果您使用Nginx 1.14.0及以下版本,请使用listen 443和ssl on代替listen 443 ssl。 #需要将yourdomain.com替换成证书绑定的域名。 server_name yourdomain.com; root html; #站点目录更改成自己的 index index.html index.htm; #需要将cert-file-name.pem替换成已上传的证书文件的名称。 ssl_certificate /etc/nginx/ssl/cert-file-name.pem; #需要将cert-file-name.key替换成已上传的证书密钥文件的名称。 ssl_certificate_key /etc/nginx/ssl/cert-file-name.key; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DHE; #表示使用的TLS协议的类型。 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; #其他的配置信息··· } 更改完成后,ctrl + o保存,ctrl + x退出,回到终端界面,然后重启Nginx服务: sudo nginx -s reload 重启完成后,验证安装是否成功,在访问网址前方加入:https://,回车访问: 原来地址栏前面的“不安全”字样变为了一把绿色的小锁,说明SSL证书安装成功 5. 设置HTTPS强转 经过上面的设置后,网站虽然可以用HTTPS访问,但是每次都得网址前面手动添加HTTPS://字样,否则就是默认HTTP方式访问,那么我们可以设置一下,使网站在用HTTP方式访问时都能自动跳转到更安全的HTTPS方式。 下面提供了三种方式来实现,任选一种在配置文件中添加相应代码即可,添加完别忘了重启nginx服务。 # 1.利用497状态码跳转,在一个站点只允许 https 访问时, 如果使用 http 访问会报出497错误码,所以可以利用497状态码重定向到 https: error_page 497 https://$host$uri?$args; # 2. if ($server_port = 80){ return 301 https://$host$request_uri; } # 3. if ($scheme = http) { return 301 https://$host$request_uri; } 此篇博客仅限单域名证书的申请安装,但是泛域名证书的话在域名服务商那里就是付费的,当然也有免费的,比如大名鼎鼎的Let's encrypt证书,参考这里:免费的泛域名证书——Let's encrypt证书 - Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com)。
2021年01月26日
680 阅读
0 评论
0 点赞
2021-01-25
【踩坑实录】记一次Nginx的排错
[Meting] [Music server="netease" id="5250472" type="song"/] [/Meting] 在阿里云服务器上自行搭建了LNMP环境,搭建完之后就开始安装typecho博客,结果装完发现typecho的后台进不去,就想着把服务器重启试试,这不重启不知道,一重启就发现大问题:刚才还能访问的typecho首页也访问不了了,然后我再次重启nginx服务: 直接报错,这一波未平一波又起可整的我够呛,遂去网上找答案,看了几个,大致方法都是这样: 按照这个方法来试试: # 先查看nginx配置文件路径: nginx -t # 再运行: nginx -c /etc/nginx/nginx.conf 结果如下: 第二步nginx -c /etc/nginx/nginx.conf的输出结果报错,遂又失败,再次重启nginx服务时,报错又变成了这样: 然后把nginx -c /etc/nginx/nginx.conf的输出报错结果放到搜索引擎上搜了一搜,又发现了这篇文章:Nginx启动时提示nginx: emerg still could not bind(),按照操作查询80端口的占用情况: netstat -ntlp|grep 80 结果显示80端口被apache2端口占用了,尝试杀掉占用端口的apache2,但是apache2生命力貌似“有点顽强”,杀了好几次还显示有占用: 我的服务器是用nginx的,用不到apache2,所以直接卸载: sudo apt --purge remove apache2 卸载完之后查看80端口就没有占用了,再次尝试刚开始的方法,执行nginx -c /etc/nginx/nginx.conf,这回就没有报错了: 重新启动nginx服务之后,网站可以正常访问了,问题解决。
2021年01月25日
579 阅读
0 评论
0 点赞