nginx
2022年3月5日
nginx
nginx介绍
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
nginx的安装
安装编译工具及库文件
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
下载Nginx
wget -P /root http://nginx.org/download/nginx-1.20.1.tar.gz
创建nginx目录
mkdir /usr/local/nginx
解压nginx压缩包
tar zxvf /root/nginx-1.20.1.tar.gz -C /usr/local/nginx
编译和安装
cd /usr/local/nginx/nginx-1.20.1
./configure --prefix=/usr/local/nginx --with-http_ssl_module
make && make install
配置环境变量
vi /etc/profile
NGINX=/usr/local/nginx/sbin
export PATH=$PATH:$NGINX
source /etc/profile
nginx的使用
查看nginx版本
nginx -v
启动命令
nginx
停止命令
nginx -s stop
重启命令
nginx -s reopen
重新载入配置文件
nginx -s reload
nginx配置文件
http配置
普通的前后端分离项目(spring + vue)均可以使用这个简单的nginx配置文件启动前端服务
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 768;
# multi_accept on;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
client_max_body_size 2048M;
server {
listen 80; // 端口 http默认80
server_name 域名; // 监听域名或者ip地址 可填写多个
location / {
root /var/www/html; // 网页文件路径
index index.html; // 主页文件
}
}
https配置
注意
配置https需要安装ssl模块, 需要检查nginx是否安装, 上述教程已经安装了ssl模块
使用 nginx -V 检查是否安装ssl模块
如果出现configure arguments: --with-http_ssl_module 则已安装
server {
listen 443; // 端口号 https默认443
server_name 域名; // 监听域名或者ip地址 可填写多个
ssl on; // ssl开关
client_max_body_size 2048M; // 允许传输的文件大小
ssl_certificate ssl证书pem路径; // ssl证书pem路径
ssl_certificate_key ssl证书key路径; // ssl证书key路径
ssl_session_timeout 5m; // ssl会话超时时间
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; // 使加密套件
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; // 使用协议配置
ssl_prefer_server_ciphers on;
location / {
root /var/www/html; // 网页文件路径
index index.html; // 主页文件
}
}
反向代理配置
通过反向代理可以实现对后端真实服务器ip的隐藏, 只会暴露代理服务器地址, 可以让没有80端口的服务器也能通过反向代理的方式使用80端口
server {
listen 80; // 监听端口
server_name 域名; // 监听域名
location / {
proxy_pass http://192.168.1.1:8080/; // 反向代理域名或ip
}
}
重定向
http的重定向, 为了在使用http访问站点时, 能自动跳转到https访问
server {
listen 80; // 监听端口
server_name 域名; // 监听域名
rewrite ^(.*)$ https://域名; // 重定向域名或ip
}
注意
如果启动了代理服务器后还是无法通过端口访问页面, 请检查服务器的防火墙策略, 使用云服务的要注意服务+云服务器运营商的防火墙策略