文章目录
Nginx 常用命令
查看nignx版本
nignx -v
查看nginx服务状态
sudo service nginx status
启动nginx服务
sudo service nginx start
重启服务
sudo service nginx restart
快速停止或关闭nginx
sudo nginx -s stop
正常停止或关闭nginx
sudo nginx -s quit
验证配置文件是否正确
sudo nginx -t
重新加载配置文件
sudo nginx -s reload
什么是 Nginx
Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。
应用场景
1、HTTP服务器
Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
2、虚拟主机
可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
3、反向代理
当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。
4、负载均衡
多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。
5、web缓存
nginx可以对不同的文件做不同的缓存处理,配置灵活,并且支持FastCGI_Cache,主要用于对FastCGI的动态程序进行缓存。配合着第三方的ngx_cache_purge,对制定的URL缓存内容可以的进行增删管理。
Nginx 配置文件说明
在此之前,请确保你已经成功安装了 nignx ,你可以使用以下命令,检查是否安装了 nginx
nginx -v
输出内容如下
查看nginx.conf配置文件
一般情况,nginx.conf 配置文件存放在 /etc/nginx 目录下,如果不确定存放位置可以通过以下命令进行查找:
sudo find / -name nginx.conf
进入 /etc/nginx 目录
cd /etc/nginx
查看配置文件
cat nginx.conf
配置文件内容如下
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
#mail {
# # See sample authentication script at:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# server {
# listen localhost:110;
# protocol pop3;
# proxy on;
# }
#
# server {
# listen localhost:143;
# protocol imap;
# proxy on;
# }
#}
nginx.conf 文件结构大致为
-
1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
-
2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
-
3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
-
4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。
-
5、location块:配置请求的路由,以及各种页面的处理情况。
详细内容请查看官方文档 nginx documentationhttps://nginx.org/en/docs/
Nginx 目录结构
站点位置
-
/var/www/html
默认的 Web 页面。默认打开可以看到 Nginx 页面。
服务器配置
-
/etc/nginx
这是 Nginx 配置目录。所有 Nginx 的配置文件都在这里。 -
/etc/nginx/nginx.conf
Nginx 的配置文件。大多数全局配置可以通过这个文件来修改。 -
/etc/nginx/sites-available
用来存储服务器下每个站点服务器块的目录。 默认情况下 Nginx 不会直接使用目录下的配置文件,需要我们更改配置来告诉 Nginx 来去读。 -
/etc/nginx/sites-enabled
这里是存储已经启用站点服务器块的目录。 -
/etc/nginx/snippets
这个目录包含一些 Nginx 的配置文件。
服务器日志
-
/var/log/nginx/access.log
记录 Nginx 的日志文件,对 Web 服务器的每个请求都会记录在这个日志中。 -
/var/log/nginx/error.log
记录 Nginx 运行过程中发生的错误日志。
设置服务器块(Server block)
使用Nginx Web服务器时,服务器块(类似于Apache中的虚拟主机)可用于封装配置详细信息,并在一台服务器中托管多个域。这里将建立一个名为 example.com 的域,但你可以用自己的域名替换它。
在 Ubuntu 上的 Nginx 默认情况下启用了一个服务器块(server block),服务器块的配置是为给服务器的目录提供地址 /var/www/html
。这对于单个站点非常有效,但是如果我们在服务器上托管多个站点,则可能变很臃肿。所以需要给 /var/www/html
目录添加上分站点目录。
比如我们的网站是 example.com ,则需要创建一个对应的目录 example.com 目录:
sudo mkdir -p /var/www/example.com/html
接下来,使用 vim 编辑器编辑 index.html 文件:
sudo vim /var/www/example.com/html/index.html
在其中,添加以下示例HTML:
/var/www/example.com/html/index.html
<html>
<head>
<title>Welcome to Example.com!</title>
</head>
<body>
<h1>Success! The example.com server block is working!</h1>
</body>
</html>
完成后保存并关闭文件。
为 Nginx 创建一个服务器块。与直接修改默认配置文件不同,我们在/etc/nginx/sites-available
目录下创建一个新文件:example.com
sudo vim /etc/nginx/sites-available/example.com
粘贴以下内容添加到 /etc/nginx/sites-available/example.com
文件中,这个块的配置与默认块的配置相似,但针对我们的新目录和域名进行了更新:
server {
listen 80;
listen [::]:80;
root /var/www/example.com/html;
index index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ =404;
}
}
接下来,在 /etc/nginx/sites-enabled
目录新建一个软连接,让 Nginx 在启动过程中会读取这个目录:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
现在已启用并配置了两个服务器块,以及基于它们的listen
和server_name
指令响应请求:
-
example.com
: 将会响应example.com
和www.example.com
的请求 -
default
: 将会响应 80 端口的请求,以及不能匹配到两个服务器块上的请求
为避免可能由于添加其他服务器名称而引起的哈希存储区内存问题,有必要调整 /etc/nginx/nginx.conf
文件中的单个值。
打开文件:
sudo vim /etc/nginx/nginx.conf
找到 server_names_hash_bucket_size
指令并删除 #
符号:
...
http {
...
server_names_hash_bucket_size 64;
...
}
...
完成后保存并关闭文件。
重新载入配置文件
sudo nginx -s reload
接下来,测试以确保我们在 Nginx 文件中的改动,没有任何问题:
sudo nginx -t
如果没有任何问题,则重新启动 Nginx:
sudo service nginx restart
Nginx 现在已经可以按照刚刚我们配置的方式来工作了。
当用户通过 http://example.com
域名访问我们的服务器时,Nginx 会将它指向我们刚刚创建的 HTML 页面。
使用 http://localhost
访问时,则会指向默认页面