nginx 服务器配置
前置工作
安装必要程序
yum -y install gcc gcc-c++ autoconf pcre-devel make automakeyum -y install wget httpd-tools vim复制代码
配置 yum 源
vim /etc/yum.repos.d/nginx.repo# 将以下内容添加进去[nginx]name=nginx repobaseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/ #OS和OSRELEASE 根据自己的系统和版本号填写 如 /centos/7gpgcheck=0enabled=1# 开始安装yum install nginx# 检查是否安装成功nginx -v复制代码
查看 nginx 安装目录
rpm -ql nginx
查看 nginx 的总配置文件
vim /etc/nginx/nginx.conf
nginx 服务的启动与停止
- 启动方式
- nginx 直接启动
- systemctl start nginx.service
- 查看是否启动
ps aux | grep nginx
- 停止方式
- nginx -s stop 立即停止
- nginx -s quit 从容停止
- killall nginx 直接杀死
- systemctl stop nginx.service
- 重启服务
- systemctl restart nginx.service
- 重新载入配置文件
- nginx -s reload
- 查看端口号占用情况
- netstat -tlnp
nginx 的配置文件
配置入口
vim /etc/nginx/conf.d/default.conf
vim /etc/nginx/nginx.conf
配置跨域支持
vim /etc/nginx/nginx.conf# 加入以下代码http { add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Headers X-Requested-With; add_header Access-Control-Allow-Methods GET,POST,OPTIONS; ...}复制代码
配置协商缓存
- etag on; //开启 etag 验证
- expires 7d; //设置缓存过期时间为 7 天
在服务器上开启 Gzip 传输压缩
- gzip on;
- gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/vnd.ms-fontobject font/ttf font/opentype font/x-woff image/svg+xml;
访问权限的控制
location / { allow 12.34.567.890; deny all;}复制代码
上述配置表示只允许 IP 为12.34.567.890 的主机进行访问。
location = /admin { deny all;}复制代码
= 根据其模式后进行精确匹配 ~ 后面跟正则匹配符(~指区分大小写的正则匹配,~*指不区分大小写的正则匹配) @ 内部访问符,一般用于错误页面
location ~ \.php$ { deny all;}复制代码
禁止访问所有 php 页面
基于端口号配置虚拟主机
原理
nginx 监听多个端口,根据不同的端口号,来区分不同的网站。
配置地方
- 可以在主配置文件
/etc/nginx/nginx.conf
- 也可以在
/etc/nginx/conf.d/default.conf
- 还可以在 conf.d 文件夹下新建一个配置文件
# 新建一个 server,监听8081,此时有两个server { listen 8081; server_name localhost; root /usr/share/nginx/html/html8081; index index.html;}复制代码
此时在浏览器访问 80 和 8081 端口,看到结果不同。
基于 IP 配置虚拟主机
与上面类似,这次改 IP;
server { listen 80; server_name 94.191.37.216; root /usr/share/nginx/html/html8001; index index.html;}复制代码
配置以域名为划分的虚拟主机(主要更改 server_name)
- default.conf
server { listen 80; server_name silence-jk.club; ...}复制代码
- com.conf
server { listen 80; server_name silence-jk.com; location / { root /usr/share/nginx/html/dist; index index.html index.htm; }}复制代码
正向代理与反向代理
- 正向代理:给客户端做代理,访问客户端不能访问的页面
- 反向代理:给服务端做代理,收到客户请求后给客户端返回服务端设置好的内容(服务端想给客户端返回的)
反向代理演示
- 修改配置文件
server { listen 80; server_name silence-jk.club; location / { proxy_pass http://silence-jk.com; # 反向代理 }}复制代码
其他反向代理指令
proxy_set_header :在将客户端请求发送给后端服务器之前,更改来自客户端的请求头信息。proxy_connect_timeout:配置Nginx与后端代理服务器尝试建立连接的超时时间。proxy_read_timeout : 配置Nginx向后端服务器组发出read请求后,等待相应的超时时间。proxy_send_timeout:配置Nginx向后端服务器组发出write请求后,等待相应的超时时间。proxy_redirect :用于修改后端服务器返回的响应头中的Location和Refresh。复制代码
nginx 适配 PC 或移动设备
内置变量 $http_user_agent
可获取客户端 userAgent 来判断是 PC 还是移动端
操作步骤
- 进入
/usr/share/nginx/
- 创建 pc 和 mobile 两个文件夹用来存放 pc 和 移动端页面
- 进入
/etc/nginx/conf.d/default.conf
添加以下内容
server{ ... location / { root /usr/share/nginx/pc; if ($http_user_agent ~* '(Android|webOS|iPhone|iPod|BlackBerry)') { root /usr/share/nginx/mobile; } index index.html; }}复制代码