Nginx 安装和基本配置 (保姆级)
创作时间:
作者:
@小白创作中心
Nginx 安装和基本配置 (保姆级)
引用
CSDN
1.
https://blog.csdn.net/weixin_65644655/article/details/142861486
Nginx(发音为 "engine x")是一个高性能的HTTP和反向代理服务器,同时也提供了邮件代理服务。它以其高并发处理能力、低资源消耗和灵活的配置而闻名,广泛应用于各种Web服务器和反向代理场景。本文将详细介绍Nginx的安装过程和基本配置,帮助读者快速掌握Nginx的使用方法。
Nginx基本介绍
- 反向代理:通过指定IP访问不同微服务
- 负载均衡:轮询访问服务
- 动静分离:优化资源加载
- 高可用集群:提高系统稳定性
- 在微服务架构中的位置:作为API网关或前端代理
Nginx核心功能介绍
- 正向代理:代理客户端请求
- 反向代理:代理服务器请求
- 传统项目资源部署:静态资源部署
- 动静分离项目资源部署:动态和静态资源分离部署
Nginx下载安装(Linux环境)
Linux虚拟机环境准备
- 使用
ifconfig命令找到IP地址 - 使用Xshell远程登录(root-root)
- 使用
ping命令检查外网连接 - 配置网关以确保网络连通
具体安装配置
前提条件
搭建gcc环境
yum -y install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel下载并解压Nginx
# 创建文件夹 mkdir -p /usr/local/nginx # 下载Nginx wget http://nginx.org/download/nginx-1.17.0.tar.gz # 解压 tar -zxvf nginx-1.17.0.tar.gz配置Nginx路径
./configure --prefix=/usr/local/nginx --pid-path=/var/run/nginx/nginx.pid \ --lock-path=/var/lock/nginx.lock --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log --with-http_gzip_static_module \ --http-client-body-temp-path=/var/temp/nginx/client --http-proxy-temp-path=/var/temp/nginx/proxy \ --http-fastcgi-temp-path=/var/temp/nginx/fastcgi --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \ --http-scgi-temp-path=/var/temp/nginx/scgi --conf-path=/usr/local/nginx/nginx.conf编译并安装
make make install测试Nginx
./sbin/nginx -t启动Nginx
./sbin/nginx -c nginx.conf查看Nginx进程
ps -ef | grep nginx检查端口监听
netstat -anp | more访问Nginx
在浏览器中输入http://localhost:80/
配置Windows访问Nginx
打开虚拟机的80端口
firewall-cmd --permanent --add-port=80/tcp firewall-cmd --reload firewall-cmd --query-port=80/tcpWindows访问
在浏览器中输入虚拟机的IP地址,例如http://192.168.200.128/
Nginx常用命令
启动
./sbin/nginx -c nginx.conf重新加载配置
./sbin/nginx -s reload停止
./sbin/nginx -s stop查看版本
./sbin/nginx -v ./sbin/nginx -V
Nginx配置文件详解
Nginx的主要配置文件是nginx.conf,位于Nginx的安装目录下。以下是一些关键配置项的说明:
# Nginx用户及组
# user nobody;
# 工作进程数
worker_processes 1;
# 错误日志
# error_log logs/error.log;
# error_log logs/error.log notice;
# error_log logs/error.log info;
# pid文件路径
pid /usr/local/nginx/logs/nginx.pid;
# 单个进程能打开的文件描述符最大值
worker_rlimit_nofile 65535;
events {
# 使用epoll的I/O模型
use epoll;
# 单个进程最大连接数
worker_connections 1024;
# 客户端请求头部的缓冲区大小
# client_header_buffer_size 4k;
}
http {
# 设定mime类型
include mime.types;
default_type application/octet-stream;
# 日志格式设置
# log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
# 记录日志
# access_log logs/host.access.log main;
# access_log logs/host.access.404.log log404;
# 服务器名字的hash表大小
server_names_hash_bucket_size 128;
# 客户端请求头缓冲大小
# client_header_buffer_size 32k;
# large_client_header_buffers 4 32k;
# 隐藏Nginx版本号
# server_tokens off;
# 忽略不合法的请求头
# ignore_invalid_headers on;
# 让 Nginx 在处理自己内部重定向时不默认使用 server_name设置中的第一个域名
# server_name_in_redirect off;
# 客户端请求体的大小
# client_body_buffer_size 8m;
# 开启文件传输
sendfile on;
# 告诉Nginx在一个数据包里发送所有头文件
# tcp_nopush on;
# tcp_nodelay off 会增加通信的延时,但是会提高带宽利用率
# tcp_nodelay on,会增加小包的数量,但是可以提高响应速度
tcp_nodelay on;
# 长连接超时时间
keepalive_timeout 65;
# gzip模块设置
# gzip on;
# gzip_min_length 1k;
# gzip_buffers 4 16k;
# gzip_http_version 1.0;
# gzip_comp_level 2;
# gzip_types text/plain text/css text/xml text/javascript application/json application/x-javascript application/xml application/xml+rss;
# 负载均衡配置
upstream myServer {
server 192.168.247.129:8080 max_fails=3 weight=2;
server 192.168.247.129:8081 max_fails=3 weight=4;
}
server {
listen 80;
server_name 192.168.247.129;
# 反向代理配置
location / {
proxy_pass http://myServer;
proxy_connect_timeout 20;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_send_timeout 300;
proxy_read_timeout 300;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
# 静态资源配置
location /image/ {
root /source/;
autoindex on;
}
# 错误页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# SSL证书配置
ssl_certificate cert/yphtoy.com.pem;
ssl_certificate_key cert/yphtoy.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# 负载均衡配置
upstream api_upstream {
server 127.0.0.1:8080 max_fails=3 weight=1;
server 127.0.0.1:8081 max_fails=3 weight=1;
}
# HTTP接口配置
server {
listen 80;
server_name api.test.com;
return 301 https://$server_name$request_uri;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# HTTPS接口配置
server {
listen 443 ssl;
server_name api.test.com;
location / {
root html;
index index.html index.htm;
proxy_pass http://api_upstream;
proxy_cookie_path /api/ /;
proxy_set_header Cookie $http_cookie;
}
}
# 管理后台HTTP配置
server {
listen 80;
server_name manage.test.com;
return 301 https://$server_name/$request_uri;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# 管理后台HTTPS配置
server {
listen 443 ssl;
server_name manage.test.com;
location / {
root /home/test/web/dist;
index /index.html;
try_files $uri $uri/ /index.html;
add_header Access-Control-Allow-Origin $http_origin;
add_header Access-Control-Allow-Credentials 'true';
add_header Access-Control-Allow-Methods 'GET,POST,DELETE,PUT,OPTIONS';
add_header Access-Control-Allow-Headers $http_access_control_request_headers;
if ($request_method = 'OPTIONS') {
return 204;
}
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
}
}
}
Nginx配置文件结构
- 全局块
worker_processes:工作进程数
- events块
worker_connections:每个工作进程的最大连接数
- http块
- http全局块
- server块
listen:监听端口server_name:服务器名称location:请求路径配置
修改Nginx监听端口
修改配置文件
vim nginx.conf重载配置
./sbin/nginx -s reload检查端口监听
netstat -anp | grep 10000访问新端口
在浏览器中输入http://localhost:10000/
配置多个server
- 复制server配置
- 修改端口
- 上传配置文件
- 重载配置
- 访问新端口
- 恢复默认端口
热门推荐
宝宝睡眠那些事儿:0~12 个月睡眠指南全攻略!
从“北漂”到“艺术巨匠”:齐白石在北京的传奇历程
心血管风险降低50%!他汀&阿司匹林复方制剂或为新选择
晒太阳还不够?维生素D的功效、建议用量与补充方法
脖子经常「咔咔」响, 是颈椎病吗?
童年主要讲什么?探秘高尔基《童年》:一段苦涩而真实的成长
紫云猫营镇:发展生态鸡养殖 助力乡村振兴
小孩吃牛肉过敏的症状及应对方法
葛根粉的正确吃法和功效
我的孩子拒學了!淺談急性拒學問題的親師初步應對
绵阳江油:实干争先 加快建成绵阳市域副中心
深耕数字乡村 打造智慧农村新生态
实证主义定义 |现代西方哲学
怀孕期间能否进行武汉眼科检查?
比肩与劫财:命理学中的关键区别及比肩的理想位置
“龙年龙月龙日龙时”是怎么回事的?
踝关节骨折康复指南:从固定到全面恢复的六大阶段
北京印刷学院与首都博物馆合作,运用科技手段创新呈现唐代文物
如何制作图表以展示同比增长率?这些图表在数据分析中有什么作用?
如何提高自己的代码能力以达到熟练使用pytorch
长寿花花语象征与寓意是什么?为啥不吉利?
国家一级保护动物——赤颈鹤
诛仙详解1:青云门衰败1700年,青叶力挽狂澜,他算不算书中最强
北魏节闵帝:在位时间有多长?最后的结局怎么样?
七星茶:怎么喝?适宜人群与注意方法
期权交易入门:通过实例理解期权交易的基本原理
恒生指数技术指标导入(恒生指数如何计算盈利)
财务造假、欺诈上市对我国股市的冲击与变革之路
去医院做胃镜的流程
回望2024! 细数游仙文旅这一年的“高光”时刻