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/tcp
Windows访问
在浏览器中输入虚拟机的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配置
- 修改端口
- 上传配置文件
- 重载配置
- 访问新端口
- 恢复默认端口
热门推荐
新冠康复期的中医调理与用药建议
鼻根隆鼻手术潜在风险介绍
房价下跌后的新问题:普通老百姓生活受冲击,你怎么看?
【信托知识普及】何为家庭服务信托?
夏天时节专吃牛羊肉,滋补又实惠
分析:2024年中国清洁能源创纪录增长遏制CO2上升
最全面最详细的字符集讲解来了!
零基础微信小程序开发——网络数据请求(保姆级教程+超详细)
贲门癌中医治疗怎样?效果好吗
日照测算|在北京冬至日,100米高层需202米楼间距可确保后排一楼全天有阳光!
魔兽世界怀旧服WLK版本更新详解
艺考生填志愿时考生和家长不做这些事,很容易高分低报、滑档退档
疏通马桶堵塞最有效的方法是什么?自己在家就能解决
烘焙百科-vol.10|夏天面团也会发酵不足?面包制作超详细解读!
从中国东北到福布斯,35岁的她狂赚60亿,让3000名员工在家上班
建设智能化煤矿还需迈过几道坎
中国是如何进入联合国五常的?
氧化镁在医疗领域的五大应用
细胞免疫疗法新武器---探索NKT的“双重天赋”
不锈钢波纹管及其增强网套:连续环型与螺旋型的性能与应用探索
未经允许擅自张贴他人照片会构成犯罪吗?也解說可採取的法律措施
温哥华考驾照全攻略:从报名到拿证的全流程新移民考驾照指南
明长城与秦长城的比较分析:历史的印记与防御工事的演变
海内外百余名学者齐聚福建研讨客家文化融合发展
滥用远光灯如何处罚?这些规定和案例必须了解
脑干胶质瘤晚期怎么办?
城大伙中国科学院研弱视新药 获美药监局临床试验许可
劳务报酬与工资薪金纳税有什么区别?举例说明→
如何提防团队内鬼
《权力的游戏》:卢斯·波顿的真实故事,小剥皮父亲的狡黠计划