开始配置前,需要购买一个服务器 腾讯云官网,购买过后还需要你先去备案,从提交备案到管理局通过正常大概一个星期,下面是我的备案操作记录,被腾讯云客服打电话驳回一次,因为填写的备用电话打不通,需要注意:提交备案后注意保持电话畅通。
我的环境:
- 服务器:腾讯云服务器
- nginx版本:nginx/1.18.0 nginx下载地址
- CentOS: CentOS Linux release 7.6.1810 (Core)
查看你的公网IP和私网IP
连接服务器
windows系统需要下载个连接服务器的客户端,xshell、xmanager等,根据自己喜欢的来选择 下载地址,我用的mac系统操作这里就直接打开终端,选择左上角的shell进行下图步骤操作就可,
- 这里输入的服务器名称是购买服务器时候给你发的名称默认root,IP地址就是公网的IP地址
- 点击连接后,终端会弹出来,让输入密码
- 输入完密码后,点击回车,即刻连接上了
用yum进行安装必要程序,安装一些服务和vim编辑器
先查看连接的linux服务器有么有安装yum(腾讯云默认是安装了)
1 | rpm -qa | grep yum |
1 | yum -y install gcc gcc-c++ autoconf pcre-devel make automake |
- 安装完成后,新建一个文件存放文件的文件夹
- 再进入到文件夹分别新建下面几个文件
app
放程序用backup
放备份文件download
下载的东西都放这里logs
日志放在这里work
工作文档都放这里
nginx下载
- 下载nginx
1
yum install nginx
- 下载完成后,查看一下版本
1
nginx -v
nginx配置
在使用yum安装完Nginx后,需要知道系统中多了哪些文件,它们都安装到了那里。可以使用下面的命令进行查看。
查看Nginx的安装目录
1
rpm -ql nginx
rpm
是linux
的rpm
包管理工具,-q
代表询问模式,-l
代表返回列表,这样我们就可以找到nginx的所有安装位置了。nginx.conf文件解读
nginx.conf
文件是Nginx
总配置文件,在我们搭建服务器时经常调整的文件。进入
etc/nginx
目录下,然后用vim
进行打开nginx.conf
文件1
2
3cd /etc/nginx
vim nginx.conf1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31#运行用户,默认即是nginx,可以不进行设置
user nginx;
#Nginx进程,一般设置为和CPU核数一样
worker_processes 1;
#错误日志存放目录
error_log /var/log/nginx/error.log warn;
#进程pid存放位置
pid /var/run/nginx.pid;
events {
worker_connections 1024; # 单个后台进程的最大并发数
}
http {
include /etc/nginx/mime.types; #文件扩展名与类型映射表
default_type application/octet-stream; #默认文件类型
#设置日志模式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#nginx访问日志存放位置
access_log /var/log/nginx/access.log main;
#开启高效传输模式
sendfile on;
#减少网络报文段的数量
#tcp_nopush on;
#保持连接的时间,也叫超时时间
keepalive_timeout 65;
#开启gzip压缩
#gzip on;
#包含的子配置项位置和文件
include /etc/nginx/conf.d/*.conf;
}查看到
nginx.conf
文件中最底下部分有个include /etc/nginx/conf.d/*.conf;
在通过命令进入到/etc/nginx/conf.d
文件夹下面,通过vim default.conf
打开文件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44server {
listen 80; #配置监听端口
server_name localhost; //配置域名
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html; #服务默认启动目录
index index.html index.htm; #默认访问文件
}
#error_page 404 /404.html; # 配置404页面
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html; #错误状态码的显示页面,配置后需要重启
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}这里补充一下
vim
进行编辑的一个简单操作- 打开文件,首先进入 命令模式
- 按下
i(insert)
进入 编辑模式 - 按下
esc
再按下:
进入 末行模式 ,以下为命令功能说明
命令 | 英文 | 作用 |
---|---|---|
:w |
write |
保存 |
:q |
quit |
退出 |
:q! |
强制退出 | |
:wq |
write & quit |
强制保存并退出 |
:x |
保存并退出 |
nginx启动,关闭
- 查看nginx有没有启动,如果出现三条记录就说明开启了
1
ps aux | grep nginx
- 启动nginx
1
nginx
- 停止nginx
方法一:立刻停止,无论程序有没有运行完,都立刻停止方法二:从容停止,有未运行完的程序,运行完成后才停止1
nginx -s stop
1
nginx -s quit
- killall 方法杀死进程
1
killall nginx
- 查看端口
1
netstat -tlnp
自定义错误页面
我们在上面的时候看到了/etc/nginx/conf.d/default.conf
文件中
1 | error_page 500 502 503 504 /50x.html; #错误状态码的显示页面,配置后需要重启 |
使用域名设置虚拟主机
修改etc/nginx/conf.d
目录下的default.conf
文件,把原来的80端口虚拟主机改为以域名划分的虚拟主机。代码如下:
1 | server { |
这时候我们再重启服务,然后属于域名就可以看到了,这里找的是 /usr/share/nginx/html
文件下面的 index.html
文件
设置反向代理
正常代理的是ip地址,这里用域名也是可以的
1 | server{ |
其它反向代理指令:
- proxy_set_header :在将客户端请求发送给后端服务器之前,更改来自客户端的请求头信息。
- proxy_connect_timeout:配置Nginx与后端代理服务器尝试建立连接的超时时间。
- proxy_read_timeout : 配置Nginx向后端服务器组发出read请求后,等待相应的超时时间。
- proxy_send_timeout:配置Nginx向后端服务器组发出write请求后,等待相应的超时时间。
- proxy_redirect :用于修改后端服务器返回的响应头中的Location和Refresh。
Nginx适配PC或移动设备
这里是在/usr/share/nginx/
文件夹下面创建pc
和mobile
文件,然后通过$http_user_agent
正则判断来选择进入到PC还是移动端的index
1 | location / { |
开启nginx的gzip压缩
Gzip是网页的一种网页压缩技术,经过gzip压缩后,页面大小可以变为原来的30%甚至更小。更小的网页会让用户浏览的体验更好,速度更快,下面简单配置代码
1 | http { |
配置好以后,重启服务,查看HTTP响应头信息。你可以看见Content-Encoding为gzip类型。
Nginx提供了专门的gzip模块,并且模块中的指令非常丰富,下面可以查看:
- gzip : 该指令用于开启(on)或 关闭(off)gzip模块。
- gzip_buffers : 设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。
- gzip_comp_level : gzip压缩比,压缩级别是1-9,1的压缩级别最低,9的压缩级别最高。压缩级别越高压缩率越大,压缩时间越长。
- gzip_disable : 可以通过该指令对一些特定的User-Agent不使用压缩功能。
- gzip_min_length:设置允许压缩的页面最小字节数,页面字节数从相应消息头的Content-length中进行获取。
- gzip_http_version:识别HTTP协议版本,其值可以是1.1.或1.0.
- gzip_proxied : 用于设置启用或禁用从代理服务器上收到相应内容gzip压缩。
- gzip_vary : 用于在响应消息头中添加Vary:Accept-Encoding,使代理服务器根据请求头中的Accept-Encoding识别是否启用gzip压缩。
最后分享一个可以在线压缩检测的站长工具https://tool.chinaz.com/Gzips