nginx 笔记
nginx 安装配置,所有的 bash 命令操作均是在 ubuntu 系统下进行的,其他系统可能略有不同。
安装
ubuntu 系统下安装方法
sudo apt install nginx
nginx 命令行语法
主要有启动、重启、停止 nginx 服务语法。
使用如下语句:
## 这是从其他博客中摘抄过来的,在实际操作中,我的 ubuntu 在 /etc/ 目录下并无 init.d 目录
# 启动
sudo /etc/init.d/nginx start
# 重启
sudo /etc/init.d/nginx restart
# 停止
sudo /etc/init.d/nginx stop
或
## 这也是摘抄而来的,实际操作中,我的 ubuntu 系统中无 service
# 启动
sudo service nginx start
# 重启
sudo service nginx restart
# 停止
sudo service nginx stop
# 重载
sudo service nginx reload
或
## 这是在实际操作中可行的语句
# 重启
sudo nginx -s reload
# 停止
sudo nginx -s stop
配置文件语法
ubuntu 系统下 nginx 配置文件路径:/etc/nginx/nginx.conf
。
nginx 是模块化的系统,整个系统由一个个模块组成,每个模块负责不同功能,如果不需要某个模块,可以将其去掉,使得 nginx 变得更小巧,更适合自己。
配置文件大体由三大块组成:events
, http
, mail
。每个块分管不同功能。
更改配置后,要重启 nginx,执行如下步骤:
nginx -t #检查配置文件是否正确
nginx -c /etc/nginx/nginx.conf
nginx -s reload
执行 nginx -c /etc/nginx/nginx.conf
时如果提示端口被占用,则执行 lsof -i:port
查看被占用端口的程序,然后执行 kill port
杀死该进程,再次执行 nginx -c /etc/nginx/nginx.conf
。
上述命令如果不是 root 用户,则需在命令前加上 sudo 。
反向代理
编辑 /etc/nginx/conf.d
目录下的 default.conf
配置文件,如果不存在的话就新建该文件。在文件中写下如下内容,如果文件中有内容,删除掉原来的内容:
server {
listen 80;
server_name your_website_name;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Host $remote_addr;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_read_timeout 300s;
proxy_pass http://127.0.0.1:3000;// 网站实际端口
client_max_body_size 300M;
sendfile on;
send_timeout 300s;
}
}
配置静态页面时,用如下内容:
server {
listen 80;
server_name your_website_name;
index index.htm index.html;
root /wwwroot/website;
}
配置二级域名反向代理
nginx 反向代理同一 ip 多个域名,给 header 加上 host 就可以了
server_name 使用
-
server_name 匹配顺序
-
准确的 server_name 匹配
server { listen 80; server_name foo.bar.com; ... }
-
以
*
通配符开始的字符串server { listen 80; server_name *.bar.com; ... }
-
以
*
通配符结束的字符串server { listen 80; server_name foo.*; ... }
-
正则表达式
server { listen 80; server_name ~^(?.+)\.howtocn\.org$; ... }
Nginx 将按照 1,2,3,4 的顺序对 server_name 进行匹配,只要有意向匹配就停止搜索。
-
-
Nginx 多域名配置
有两种方法,一种是每个域名写一个配置文件,另一种是多个域名写在一个配置文件里
-
每个域名一个文件
在
/etc/nginx/conf.d
目录下新建配置文件,例如要绑定www.foo.com
域名,则建立一个www.foo.com.conf
文件,然后在文件里填写规则:server { listen 80; server_name www.foo.com; ... other configure ... }
需要创建什么域名,就创建一个这样的配置文件。
-
一个文件多个域名
其实就是把多个 server 配置写在一个文件里
server { listen 80; server_name www.foo.com; ... other configure ... } server { listen 80; server_name blog.foo.com; ... other configure }
-
-
不带 www 域名加 301 跳转
如果不带 www 的域名要加 301 跳转,和绑定域名一样,先绑定不带 www 的域名,不用写网站目录,而是进行 301 跳转,如:
server { listen 80; server_name foo.com; rewrite ^/(.*) http://www.foo.com/$1 permanent; }
-
添加 404 页面
在 server 中添加 404 规则:
server { ... error_page 404 /404.html; }
-
禁止 ip 直接访问
在第一个 server 前添加一个 server ,内容如下:
server { listen 80 default; server_name _; return 403; }
相关链接:
- nginx 教程 @htpp2012
- docker 入门指南
- Nginx 二级域名及多 Server 反向代理配置 -极客学院