Nginx 使用心得

... 2019-06-12 17:29 大约 2 分钟

今天给大家梳理一下 Nginx 的使用,包括配置、代理等。

现在的项目多是前后端分离的项目,所以我们不必在把前端项目放入后端项目,然后起 Apache 或者 Tomcat 运行后端项目,Apache和Nginx的区别 (opens new window) ,简而言之,现在的 web 项目基本上都是跑在 Nginx 上的,虽然项目部署这类事情不用我们操心,但多了解一点总是没错的。

安装就不赘述了,之前的文章也有提到

# 配置

Nginx 的配置默认都在 conf 文件夹下,默认的配置我就不放了,各位安装成功后打开 conf 下的 nginx.conf 就能看到,下面是我改过的配置文件 nginx.conf ,没有用到的一些注释我都删掉了,为了节省篇幅,在 Nginx 的配置中使用 # 来进行注释

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;


    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    # 这行的意思是包含当前目录下的 vhosts 文件夹中的所有以 .conf 结尾的文件,Nginx 支持多配置,这样的方式可以让配置目录更加清晰,也可以将配置都写在这一个文件中,个人建议还是分开写
    include vhosts/*.conf;

    error_page   500 502 503 504  /50x.html;  

}

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

下面我们使用的主域名以 xxx.com 为例

# /vhosts/xxx_com.conf
server {
        listen       80; # 访问的是 80 端口
        server_name xxx.com; # 访问的域名是 xxx.com
        charset utf-8; # 编码格式为 utf-8
        access_log  logs/xxx_com.access.log; # 成功日志
        error_log   logs/xxx_com.error.log; # 错误日志
		
		location / { # 匹配规则
	    	root   /service/nginx/html/home/; # 站点文件目录
             index  index.html index.htm; # 入口文件格式
        }
}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

多个子域名配置

# /vhosts/blog_xxx_com.conf
server {
        listen       80; # 访问的是 80 端口
        server_name blog.xxx.com; # 访问的域名是 blog.xxx.com
        charset utf-8; # 编码格式为 utf-8
        access_log  logs/blog_xxx_com.access.log; # 成功日志
        error_log   logs/blog_xxx_com.error.log; # 错误日志
		
		location / { # 匹配规则
            try_files $uri $uri/ /index.html; # 对单页应用,访问的路由都返回 index.html
	        root   /service/nginx/html/blog/; # 站点文件目录
            index  index.html index.htm; # 入口文件格式
        }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

上述配置大致意思是,都访问的是本机的 80 端口,但是因为访问的域名不同而使用不同的配置,从而达到多域名配置的效果

# 代理

。。。

server {
        listen       80;
        server_name blog.xxx.com;
        charset utf-8;
        access_log  logs/blog_xxx_com.access.log;
        error_log   logs/blog_xxx_com.error.log;
		
	location / {
        try_files $uri $uri/ /index.html;
	    root   /service/nginx/html/blog/;
        index  index.html index.htm;
    }

	location ~ /api/ { # 匹配以 api 开头的 url
         proxy_pass  http://127.0.0.1:8090; # 将其代理至本机的 8090 端口(服务端运行在本机的 8090 端口)
	}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
上次编辑于: 2021年5月27日 20:21