前面我们已经对Nginx服务器默认配置文件的结构和涉及的基本指令做了详细的阐述。通过这些指令的合理配置,我们就可以让一台Nginx服务器正常工作,并且提供基本的web服务器功能。
接下来将通过一个比较完整和最简单的基础配置实例,来巩固下前面所学习的指令及其配置。
需求如下:
1、有如下访问
http://192.168.200.133:8081/server1/location1
访问的是:index_sr1_location1.html
http://192.168.200.133:8081/server1/location2
访问的是:index_sr1_location2.html
http://192.168.200.133:8082/server1/location1
访问的是:index_sr2_location1.html
http://192.168.200.133:8082/server1/location2
访问的是:index_sr2_location2.html
2、如果访问的资源不存在
返回自定义的404页面。
3、将/server1和/server2的配置使用不同的配置文件分割
将文件放到/home/www/conf.d目录下,然后使用include进行合并。
4、为/server1和/server2各自创建一个访问日志文件
先建立好目录结构:
ngnix-1.20.2目录
html目录
conf.d目录
server1.conf
server2.conf
myweb目录
server1目录
location1目录
index_sr1_location1.html
location2目录
index_sr1_location2.html
logs目录
access.log
server2目录
location1目录
index_sr2_location1.html
location2目录
index_sr2_location2.html
logs目录
access.log
404.html
nginx.conf:
## 全局块 begin ##
# 配置允许运行Nginx工作进程的用户和用户组
# user www
# 配置运行Nginx进程生成的worker进程数
worker_processes 2;
# 配置Nginx服务器运行对错误日志存放的路径
error_log logs/error.log;
# 配置Nginx服务器允许时记录Nginx的master进程的PID文件路径和名称
pid logs/nginx.pid;
# 配置Nginx服务是否以守护进程方法启动
# deamon on;
## 全局块 end ##
## events块 begin ##
events {
# 设置nginx网络序列化,解决惊群现象
accept_mutex on;
# 设置允许worker可以同时接收多个请求
multi_accept on;
# 设置nginx进程最大能接收的连接数
worker_connections 1024;
# 设置nginx的事件驱动模型
# use epoll;
}
## events块 end ##
## http块 begin ##
http {
# 解决MIME类型的配置
include mime.types;
default_type application/octet-stream;
# 配置允许使用sendfile方式运输,用来提升nginx处理静态资源的效率
sendfile on;
# 设置长连接的超时时间
keepalive_timeout 65;
# 配置请求处理日志格式
log_format server1 '===>server1' access log format;
log_format server2 '===>server2' access log format;
## server块 begin ##
# 通过include来指定额外的配置文件(相对路径从该文件所在目录开始)
include ../html/conf.d/*.conf;
## server块 end ##
}
## http块 end ##
server1.conf:
server {
# 配置监听端口和主机名称
listen 8079;
server_name localhost;
# 配置请求处理日志存放路径
access_log html/myweb/server1/logs/access.log;
# 配置处理/server1/location1请求的location
location /server1/location1{
# 根的相对路径从nginx所在目录开始
root html/myweb;
index index_sr1_location1.html;
}
# 配置处理/server1/location2请求的location
location /server1/location2 {
root html/myweb;
index index_sr1_location2.html;
}
# 配置错误页面
error_page 404 /404.html;
# 配置错误页面转向
location = /404.html {
root html/myweb;
index 404.html;
}
}
server2.conf:
server {
listen 8078;
server_name localhost;
access_log html/myweb/server2/logs/access.log;
location /server2/location1{
root html/myweb;
index index_sr2_location1.html;
}
location /server2/location2 {
root html/myweb;
index index_sr2_location2.html;
}
error_page 404 /404.html;
location = /404.html {
root html/myweb;
index 404.html;
}
}
2、Nginx服务操作的问题
经过前面的操作我们会发现,如果想要启动、关闭或重新加载nginx配置文件,都需要先进入到nginx的安装目录的sbin目录,然后使用nginx的二进制可执行文件来操作,相对来说操作比较繁琐,应该如何优化?另外如果我们想把Nginx设置成随着服务器启动就自动完成启动操作,又该如何来实现?
2.1、Nginx配置成系统服务把Nginx应用服务设置称为系统服务,方便对Nginx服务的启动和停止等相关操作,具体实现步骤:
在/usr/lib/systemd/system目录下添加nginx.service,内容如下:
2.2、Nginx命令配置到系统环境 3、Nginx静态资源部署 3.1、Nginx静态资源概述静态资源即指在服务器端真实存在并且能直接拿来展示的一些文件,比如常见的html页面、css文件、js文件、图片、视频等资源。
动态资源即指在服务器端真实存在但是要想获取需要经过一定的业务逻辑处理,根据不同的条件展示在页面不同这一部分内容,比如说报表数据展示、根据当前登录用户展示相关具体数据等资源。
Nginx处理静态资源的内容,我们需要考虑下面的这几个问题:
- 静态资源的配置指令;
- 静态资源的配置优化;
- 静态资源的压缩配置指令;
- 静态资源的缓存处理;
- 静态资源的访问控制,包括跨域问题和防盗链问题。
1、listen指令
listen:用来配置监听端口。
| 语法 | listen address[:port][default_server]...; listen port [default_server]; |
| 默认值 | listen *:80 | *.8080 |
| 位置 | server |
listen的设置比较灵活,我们通过几个例子来吧常用的设置方式熟悉下:
listen 127.0.0.1:8080; //listen localhost:8080 监听指定的IP和端口 listen 127.0.0.1; //监听指定IP的所有端口 listen 8000; //监听指定端口上的连接 listen *:8000; //监听指定端口上的连接
default_server属性是标识符,用来将此虚拟主机设置成默认主机。所谓的默认主机指的是如果没有匹配到对应的address:port,则会默认执行的。如果不指定默认使用的是第一个server。



