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配置
- 修改端口
- 上传配置文件
- 重载配置
- 访问新端口
- 恢复默认端口
热门推荐
写心字的成语有哪些?你知道多少“心”成语?揭秘那些蕴含情感的汉字智慧!
谦虚的价值:在现代社会中重新认识谦虚的意义
2025苏州社保缴纳比例详解
小叶黄杨:园林绿化中的“绿色卫士”
三亚房价最新消息:深度解析海南岛房产市场现状及未来走势
天冷了,每天洗澡有必要吗?
双下肢水肿病人的健康教育
北大物理学院团队破解核子电极化率难题,研究成果登《物理评论快报》
智能摄像头选购指南:如何选择适合老人使用的智能摄像头
求生团队如何配合
什么鱼清蒸最好吃?内行人都会选择这6种,营养美味,蛋白质丰富
员工因过错致企业损失的责任界定与合规建议
裂开表情究竟代表了什么情绪?
酒店提供入住记录时需遵循哪些法律程序
打开游戏缺少c++组件怎么修复?缺少C++组件问题的解决方法
三支一扶工资标准是多少?
裂开表情包是什么意思?解析裂开表情包的含义和使用场景
鼻塞流清鼻涕?这些药物可能有帮助,但请务必遵医嘱
南京一日游攻略:美食、文化、自然三合一,尽享城市魅力
八个月的宝宝吃什么辅食有营养
手机护眼模式真相|医生提醒:调黄屏幕≠真护眼!科学护眼牢记这5招
债市“强牛”能否再创新高?
购房时合同约定面积与产权登记面积不一样怎么办
如何理解加息对股市的影响机制?这种理解对投资策略有何启示?
“六一”儿童节将至,这份儿童化妆品选购知识要知道
体位改变就头晕怎么回事
如何快速完成毕业论文:高效写作指南
《说文解字》对汉字文化有何深远影响?
松湖花海:四季花开的自然奇观
为什么清朝北洋舰队的经费都要靠盛宣怀?这个晚清首富创造了什么