Nginx 基本安装与配置(多平台)
前言
本文将介绍Nginx的基本安装及配置,并给出不同平台(Windows、Linux、MacOS)下的安装及配置方式。最后,本文所使用的Nginx版本文件可见文末的网盘链接或者通过官网链接自行选择下载。
Windows
在windows上我安装的是nginx-1.21.1,并且采用压缩包安装方式(压缩包见文末资源链接),首先将压缩包解压到指定文件夹(这里位置可以自己选择其它位置,一般不建议系统盘,可能会出现权限问题,由于我使用的虚拟机环境测试,所以也就随意了):
然后即可点击目录下的nginx.exe运行,双击后可以看到一个一闪而过的黑窗口,然后我们就可以在本机通过浏览器访问测试,在此之前,先看一下ip地址:
然后在浏览器访问测试(Nginx默认启动端口为80):
如果想要关闭,则可以在任务任务管理器中选择关闭,或者在安装目录下执行nginx.exe -s stop命令即可。
Linux
在Linux上我安装的是nginx-1.21.1,并且采用压缩包安装方式(压缩包见文末资源链接),首先将压缩包解压到指定文件夹:
然后进入到目录中执行bash configure:
稍等片刻可以在最后看到如下的输出信息(这里的nginx binary file即为执行文件位置):
然后再在命令行执行make && make install,再稍等片刻,这时便可以运行nginx了:
/usr/local/nginx/sbin/nginx
然后执行以下命令开放80端口:
systemctl start firewalld
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
然后查看本机ip:
然后本机在浏览器测试:
MacOS
在MacOS下和linux安装的是同一个nginx-1.21.1,整体步骤也类似,首先进行解压:
然后进入到目录中执行bash configure:
不过这样直接执行在之后make会出现权限问题,需要通过vim configure进行些许修改:
# 创建一个目录代替原本的 /usr/local/nginx
mkdir bin
# 查看当前路径
pwd
vim configure
然后修改图示的位置为刚才创建的bin目录的位置:
这时再执行bash configure可以在最后看到如下的输出信息(这里的nginx binary file即为执行文件位置):
然后再在命令行执行make && make install,再稍等片刻,这时便可以运行nginx了:
/Users/butterfly/file/develop/nginx-1.21.1/bin/sbin/nginx
然后查看本机ip:
然后本机在浏览器测试:
端口配置
Nginx默认运行端口为80,如果想要修改,只需使用vim /usr/local/nginx/conf/nginx.conf命令来修改server内的listen端口即可:
然后执行以下命令开放8888端口:
systemctl start firewalld
firewall-cmd --zone=public --add-port=8888/tcp --permanent
firewall-cmd --reload
然后执行/usr/local/nginx/sbin/nginx -s reload重启服务,并在本地浏览器进行测试:
如果想要同时开放多个端口访问,直接添加一个server配置即可,例如下面配置开启了8081和8082端口:
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重新加载配置,同时防火墙开启8081和8082端口,然后在本地测试:
默认情况下,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文件内容如下:
然后执行/usr/local/nginx/sbin/nginx -s reload重新加载配置,然后在本地测试:
此外,如果想要配置项目前缀,则只需要进行类似如下的配置,增加一个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配置,那么肯定要展示下反向代理,首先使用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
然后进行代理配置:
server {
# 监听 80 端口
listen 80;
server_name localhost;
location / {
# 转发到 8080 端口
proxy_pass http://localhost:8080;
}
}
然后记得防火墙开启80端口,然后在本地进行测试:
配置HTTPS
在配置https服务前需要先执行/usr/local/nginx/sbin/nginx -V查看输出内容中有无configure arguments: –with-http_ssl_module,如果没有则需要安装ssl模块:
然后下载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
得到以下输出:
然后解压这两个文件:
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模块安装成功:
关于使用java自带jdk生成ssl自签名证书的步骤可以查看这篇文章:nginx 配置自签名的ssl证书。
然后都存放在tmp目录下:
然后修改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端口后在本地浏览器进行测试:
资源链接
链接:pan.baidu.com/s/17PmvmZrU… 提取码:asku
windows官网链接:nginx.org/download/ng…
linux & mac官网链接:nginx.org/download/ng…

浙公网安备 33010602011771号