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配置
- 修改端口
- 上传配置文件
- 重载配置
- 访问新端口
- 恢复默认端口
热门推荐
灵感来源于重复实践!褚君浩院士抖音分享科研“圈胶法”的创新故事
头癣的症状和治疗方法
杭州未来科技城:产业"森林"何以欣欣向荣
春季干燥不适?这5种食物帮你滋阴润肺、清热去火!
备孕期间能否使用头孢菌素类抗生素?医生这样说
中美俄核潜艇深度对比:美610米,俄1250米,中国能多深?
静电的危害与防护:从原理到实用解决方案
高中生物学习方法全攻略:从基础到考试技巧的全方位指南
加仑和升怎么换算?
日语专业就业方向与就业前景怎么样
食物中毒查血哪几项出现异常
接地材料一般选择什么金属?接地用什么材质比较好?
多身份人设如何打造团队
茶晶 SMOKY QUARTZ|慢溫水晶天然礦石知識庫
缅甸公路之旅:从仰光到曼德勒的深度游攻略
手机、平板等首次纳入“国补”!上海已有首批居民享受到
十二星座——天蝎座的性格特点有哪些?
如何区分前端和后端区别
高考小综合复习攻略:快速应对,避免在难题上耗时
道教怎么看人的前世记忆
笔记本电池如何测试软件
南怀瑾:入定的奥秘与境界
汉武帝的继承者选择:刘弗陵继位背后的考量
广西玉林八大特色美食,每道菜都是玉林人的心头爱
八字格局用神表 – 八字格局取用神
选对细胞是免疫力提升的关键:干细胞和免疫细胞,谁才是你的最佳选择?
孕妇不缺钙也应适当晒太阳
蜗杆传动原理详解,机械人不可不知
探究“人之师表”的深层含义与典故出处
这些年围绕林生斌的五大争议事件,真相如何?