文章目录

  • 前言
  • Windows
  • Linux
  • MacOS
  • 端口配置
  • 反向代理
  • 配置HTTPS
  • 资源链接


前言

本文将介绍Nginx的基本安装及配置,并给出不同平台(WindowsLinuxMacOS)下的安装及配置方式。最后,本文所使用的Nginx版本文件可见文末的网盘链接或者通过官网链接自行选择下载。

Windows

windows上我安装的是nginx-1.21.1,并且采用压缩包安装方式(压缩包见文末资源链接),首先将压缩包解压到指定文件夹(这里位置可以自己选择其它位置,一般不建议系统盘,可能会出现权限问题,由于我使用的虚拟机环境测试,所以也就随意了):

生产nginx需要多高的配置 nginx操作系统要求_html

然后即可点击目录下的nginx.exe运行,双击后可以看到一个一闪而过的黑窗口,然后我们就可以在本机通过浏览器访问测试,在此之前,先看一下ip地址:

生产nginx需要多高的配置 nginx操作系统要求_生产nginx需要多高的配置_02

然后在浏览器访问测试(Nginx默认启动端口为80):

生产nginx需要多高的配置 nginx操作系统要求_nginx_03

如果想要关闭,则可以在任务任务管理器中选择关闭,或者在安装目录下执行nginx.exe -s stop命令即可。

生产nginx需要多高的配置 nginx操作系统要求_html_04

Linux

Linux上我安装的是nginx-1.21.1,并且采用压缩包安装方式(压缩包见文末资源链接),首先将压缩包解压到指定文件夹:

生产nginx需要多高的配置 nginx操作系统要求_生产nginx需要多高的配置_05

然后进入到目录中执行bash configure

生产nginx需要多高的配置 nginx操作系统要求_linux_06

稍等片刻可以在最后看到如下的输出信息(这里的nginx binary file即为执行文件位置):

生产nginx需要多高的配置 nginx操作系统要求_生产nginx需要多高的配置_07

然后再在命令行执行make && make install,再稍等片刻,这时便可以运行nginx了:

生产nginx需要多高的配置 nginx操作系统要求_linux_08

/usr/local/nginx/sbin/nginx

然后执行以下命令开放80端口:

systemctl start firewalld
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

然后查看本机ip

生产nginx需要多高的配置 nginx操作系统要求_nginx_09

然后本机在浏览器测试:

生产nginx需要多高的配置 nginx操作系统要求_linux_10

MacOS

MacOS下和linux安装的是同一个nginx-1.21.1,整体步骤也类似,首先进行解压:

生产nginx需要多高的配置 nginx操作系统要求_java_11

然后进入到目录中执行bash configure

生产nginx需要多高的配置 nginx操作系统要求_nginx_12

不过这样直接执行在之后make会出现权限问题,需要通过vim configure进行些许修改:

# 创建一个目录代替原本的 /usr/local/nginx
mkdir bin
# 查看当前路径
pwd
vim configure

然后修改图示的位置为刚才创建的bin目录的位置:

生产nginx需要多高的配置 nginx操作系统要求_html_13

这时再执行bash configure可以在最后看到如下的输出信息(这里的nginx binary file即为执行文件位置):

生产nginx需要多高的配置 nginx操作系统要求_nginx_14

然后再在命令行执行make && make install,再稍等片刻,这时便可以运行nginx了:

生产nginx需要多高的配置 nginx操作系统要求_html_15

/Users/butterfly/file/develop/nginx-1.21.1/bin/sbin/nginx

然后查看本机ip

生产nginx需要多高的配置 nginx操作系统要求_java_16

然后本机在浏览器测试:

生产nginx需要多高的配置 nginx操作系统要求_nginx_17

端口配置

Nginx默认运行端口为80,如果想要修改,只需使用vim /usr/local/nginx/conf/nginx.conf命令来修改server内的listen端口即可:

生产nginx需要多高的配置 nginx操作系统要求_java_18

然后执行以下命令开放8888端口:

systemctl start firewalld
firewall-cmd --zone=public --add-port=8888/tcp --permanent
firewall-cmd --reload

然后执行/usr/local/nginx/sbin/nginx -s reload重启服务,并在本地浏览器进行测试:

生产nginx需要多高的配置 nginx操作系统要求_java_19

如果想要同时开放多个端口访问,直接添加一个server配置即可,例如下面配置开启了80818082端口:

server { 
	listen       8081; 
	server_name  localhost; 
    location / { 
    	root   html; 
        index  index.html index.htm; 
    } 
}

server { 
	listen       8082; 
    server_name  localhost; 
    location / { 
    	root   html; 
        index  index.html index.htm; 
    } 
}

然后执行/usr/local/nginx/sbin/nginx -s reload重新加载配置,同时防火墙开启80818082端口,然后在本地测试:

生产nginx需要多高的配置 nginx操作系统要求_java_20

默认情况下,nginx访问的是nginx/html/下的内容,所以如果有前端代码则可以选择放在html目录下,如果想要自行选择文件的存放位置,也可以配置root属性:

server {
	listen       8081;
    server_name  localhost;
    location / {
    	root   /home/butterfly/demo;
        index  index.html index.htm;
    }
}

这里配置root路径为/home/butterfly/demo,并且在路径下的index.html文件内容如下:

生产nginx需要多高的配置 nginx操作系统要求_html_21

然后执行/usr/local/nginx/sbin/nginx -s reload重新加载配置,然后在本地测试:

生产nginx需要多高的配置 nginx操作系统要求_java_22

此外,如果想要配置项目前缀,则只需要进行类似如下的配置,增加一个location配置:

server {
	listen       8081;
	server_name  localhost;
	
	location / {
		root    /home/butterfly/demo;
		index index.html index.htm;
	}

	location ^~ /demo {
		alias   /home/butterfly/demo;
		try_files $uri $uri/ /demo/index.html;
	}
	# 等价如下配置
	# location ^~ /demo {
	#     root   /home/butterfly;
	#     try_files $uri $uri/ /demo/index.html;
	# }
}

root 的处理结果是:root路径+location路径
alias 的处理结果是:使用alias路径替换location路径

然后直接展示效果,访问时加上/demo

生产nginx需要多高的配置 nginx操作系统要求_java_23

反向代理

既然讲Nginx配置,那么肯定要展示下反向代理,首先使用springboot写一个简单的测试接口:

@RestController
class HelloController {

    @GetMapping("/hello")
    fun hello() = "Hello, world!"

}

然后将打好的jar包上传到linux上并运行(默认为8080端口)并测试:

# 后台运行
nohup java -jar hello-0.0.1-SNAPSHOT.jar &
# 测试接口
curl http://localhost:8080/hello

生产nginx需要多高的配置 nginx操作系统要求_java_24

然后进行代理配置:

server {
    # 监听 80 端口
	listen       80;
    server_name  localhost;
    location / {
        # 转发到 8080 端口
		proxy_pass http://localhost:8080;
	}
}

然后记得防火墙开启80端口,然后在本地进行测试:

生产nginx需要多高的配置 nginx操作系统要求_html_25

配置HTTPS

在配置https服务前需要先执行/usr/local/nginx/sbin/nginx -V查看输出内容中有无configure arguments: –with-http_ssl_module,如果没有则需要安装ssl模块:

生产nginx需要多高的配置 nginx操作系统要求_linux_26

然后下载openssl安装包:

https://www.openssl.org/source/openssl-1.1.1d.tar.gz

然后执行以下命令先新建一个临时目录,准备存放openssl源代码包和临时的Nginx

mkdir tmp
cp nginx-1.21.1.tar.gz tmp/
cd tmp/
ls

得到以下输出:

生产nginx需要多高的配置 nginx操作系统要求_html_27

然后解压这两个文件:

tar -zxvf nginx-1.21.1.tar.gz
tar -zxvf openssl-1.1.1d.tar.gz

然后编译nginx

# 这里的 --with-openssl 值根据自己存放 openssl 的路径而定
./configure --with-http_ssl_module --with-openssl=/home/butterfly/tmp/openssl-1.1.1d
# 不能加 make install 否则会覆盖编译过的 nginx
make
# 停止运行的 nginx
/usr/local/nginx/sbin/nginx -s stop
# 覆盖原有的文件
cp ./objs/nginx /usr/local/nginx/sbin/
# 再次查看安装状态
/usr/local/nginx/sbin/nginx -V

然后可以发现ssl模块安装成功:

生产nginx需要多高的配置 nginx操作系统要求_linux_28

关于使用java自带jdk生成ssl自签名证书的步骤可以查看这篇文章:nginx 配置自签名的ssl证书

然后都存放在tmp目录下:

生产nginx需要多高的配置 nginx操作系统要求_linux_29

然后修改nginx的配置:

# 这里除了证书和密钥的配置位置需要修改外,其它均为 nginx 本身存在的配置,只需要去掉注释即可
server {
	listen       443 ssl;
    server_name  localhost;

    # 修改为自己证书文件和密钥的位置
    ssl_certificate      /home/butterfly/tmp/nginx.cer;
    ssl_certificate_key  /home/butterfly/tmp/nginx.key.unsecure;

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;
    
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;
    
    location / {
		root   html;
		index  index.html index.htm;
	}
}

然后执行/usr/local/nginx/sbin/nginx -s reload重新运行nginx,防火墙开启443端口后在本地浏览器进行测试:

生产nginx需要多高的配置 nginx操作系统要求_java_30