Nginx服务器安装与配置指南
作者:别多香了
Nginx是一个高性能的HTTP和反向代理服务器,能支持大量并发连接,消耗较低的系统资源,适合用作生产环境的Web服务器,本文给大家介绍Nginx服务器安装与配置指南,感兴趣的朋友跟随小编一起看看吧
Nginx服务器配置
一、Nginx 简介
Nginx 是一款高性能的 HTTP 和反向代理服务器,其核心优势在于:
- 采用高效的网络 I/O 模型(epoll、kqueue、eventport 等)
- 支持高达 5 万个并发连接
- 系统资源(内存、CPU)消耗低
- 运行稳定,适合作为生产环境的 web 服务器
二、Nginx 安装与基础配置
1. 安装与启动
# 使用 yum 包管理器安装 nginx [root@server ~ 14:30:54]# yum -y install nginx # 设置 nginx 开机自启并立即启动 # enable: 开机自启;--now: 立即启动 [root@server ~ 14:30:54]# systemctl enable nginx.service --now
2. 配置主页与测试
# 备份默认主页 [root@server ~ 23:19:05]# mv /usr/share/nginx/html/index.html{,.ori} # 创建自定义主页内容 [root@server ~ 23:19:42]# echo nihao > /usr/share/nginx/html/index.html
3. 防火墙配置
# 永久开放 http 服务(80端口) [root@server ~ 14:33:53]# firewall-cmd --add-service=http --permanent # 重新加载防火墙规则使配置生效 [root@server ~ 14:33:53]# firewall-cmd --reload
4. 测试配置
# 测试访问 [root@server ~ 23:20:13]# curl http://www.server.cloud curl: (6) Could not resolve host: www.server.cloud; 未知的错误 [root@server ~ 23:21:00]# vim /etc/hosts # windows客户端修改C:\Windows\System32\drivers\etc\hosts # Linux或Unix修改 /etc/hosts # 添加如下记录 10.1.8.10 www.server.cloud #ip为实际ip
三、虚拟主机配置
虚拟主机允许在同一台服务器上部署多个网站,主要有两种实现方式:
1. 基于域名的虚拟主机
# 创建虚拟主机配置文件,从nginx.conf中抄格式 [root@server ~ 23:23:37]# vim /etc/nginx/nginx.conf [root@server ~ 23:24:05]# vim /etc/nginx/conf.d/vhost-name.conf
配置内容:
#第一个虚拟主机 server { server_name www1.server.cloud; # 绑定的域名 root /usr/share/nginx/web1; # 网站根目录 } #第二个虚拟主机 server { server_name www2.server.cloud; # 绑定的域名 root /usr/share/nginx/web2; # 网站根目录 }
测试与验证
#先创建root中所填目录 [root@server ~ 23:31:06]# mkdir /usr/share/nginx/web1 [root@server ~ 23:31:13]# mkdir /usr/share/nginx/web2 #写入网站内容 [root@server ~ 23:31:30]# echo abc > /usr/share/nginx/web1/index.html [root@server ~ 23:31:42]# echo ooo > /usr/share/nginx/web2/index.html #修改主机配置 [root@server ~ 23:32:37]# vim /etc/hosts 10.1.8.10 web1.server.cloud 10.1.8.10 web2.server.cloud #重启服务并测试web页面 [root@server ~ 23:53:04]# systemctl restart nginx.service [root@server ~ 23:33:41]# curl http://web1.server.cloud abc [root@server ~ 23:33:46]# curl http://web2.server.cloud ooo
2. 基于端口的虚拟主机
# 创建端口虚拟主机配置文件 #继续从nginx.conf里面粘贴,这次要把端口也粘贴出来 [root@server ~ 15:58:28]# vim /etc/nginx/conf.d/vhost-port.conf
配置内容:
# 监听 8081 端口的虚拟主机 server { listen 8081; # 监听端口 server_name server.cloud; # 绑定域名 root /usr/share/nginx/8081; # 网站根目录 } # 监听 8082 端口的虚拟主机 server { listen 8082; # 监听端口 server_name server.cloud; # 绑定域名 root /usr/share/nginx/8082; # 网站根目录 }
测试与验证
#创建目录 [root@server ~ 23:45:29]# mkdir /usr/share/nginx/8081 [root@server ~ 23:46:01]# mkdir /usr/share/nginx/8082 [root@server ~ 23:46:03]# echo qwer > /usr/share/nginx/8082/index.html [root@server ~ 23:46:34]# echo cpdd > /usr/share/nginx/8081/index.html #重启服务!并测试 [root@server ~ 23:53:04]# systemctl restart nginx.service [root@server ~ 23:53:41]# curl http://server.cloud:8081 cpdd [root@server ~ 23:53:44]# curl http://server.cloud:8082 qwer
四、SSL/TLS 配置(HTTPS)
1. 生成 SSL 证书
# 1. 生成 2048 位的私钥文件 [root@server ~ 23:53:48]# openssl genrsa -out www.key 2048 # 2. 生成证书请求文件(CSR) # -subj 参数指定证书信息:国家/省份/城市/组织/部门/域名/邮箱 [root@server ~ 23:58:24]# openssl req -new -key www.key -o ut www.csr -subj "/C=CN/ST=JS/L=NJ/O=LM/OU=DEVOPS/CN=www.server.cloud/emailAddress=server@server.cloud" # 注意:CN 的值必须与网站域名一致 # 3. 使用私钥对请求文件签名,生成自签名证书(有效期 3650 天) [root@server ~ 23:59:00]# openssl x509 -req -days 3650 -in www.csr -signkey www.key -out www.crt
2. 配置 HTTPS 站点
# 创建证书存放目录 [root@server ~ 23:59:14]# mkdir /etc/ssl/certs/www.server.cloud # 移动证书文件到指定目录 [root@server ~ 00:00:56]# ls anaconda-ks.cfg www.crt www.csr www.key [root@server ~ 00:01:26]# mv www* /etc/ssl/certs/www.server.cloud # 编辑 HTTPS 配置文件 #一定要把ssl.conf文件创建在/etc/nginx/conf.d/下,不然无法识别 [root@server ~ 00:26:24]# vim /etc/nginx/conf.d/ssl.conf
配置内容:
server { # 监听 443 端口(HTTPS 默认端口),启用 SSL 和 HTTP/2 listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; server_name www.server.cloud; # 绑定域名 root /usr/share/nginx/html; # 网站根目录 # 配置证书路径 ssl_certificate "/etc/ssl/certs/www.server.cloud/www.crt"; # 公钥证书 ssl_certificate_key "/etc/ssl/certs/www.server.cloud/www.key"; # 私钥 }
3. 配置 HTTP 重定向到 HTTPS
# 编辑 nginx 主配置文件 [root@server ~ 00:28:08]# vim /etc/nginx/nginx.conf
添加重定向配置:
server { listen 80 default_server; # 监听 80 端口(HTTP) listen [::]:80 default_server; server_name www.server.cloud; root /usr/share/nginx/html; # 301 永久重定向到 HTTPS # $host: 域名;$request_uri: 请求路径 return 301 https://$host$request_uri; }
4. 重启服务与防火墙配置
# 重启 nginx 使配置生效 [root@server ~ 00:29:59]# systemctl restart nginx.service # 开放 HTTPS 服务(443 端口) [root@www ~]# firewall-cmd --add-service=https --permanent [root@www ~]# firewall-cmd --reload # 测试重定向(会自动跳转到 HTTPS) [root@server ~ 00:30:18]# curl http://www.server.cloud/ <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx/1.20.1</center> </body> </html> # 测试 HTTPS 访问(-k 忽略证书验证,自签名证书需要此参数) [root@server ~ 00:30:38]# curl -k https://www.server.cloud/ mmm
五、支持动态脚本
配置 PHP 支持
# 安装 PHP 及相关组件 [root@server ~ 11:37:36]# yum install -y php php-fpm [root@server ~ 11:37:36]# yum install -y php-gd php-common php-pear php-mbstring php-mcrypt # 查看 PHP 版本 [root@server ~ 11:37:53]# php -v # 简单测试 PHP 是否正常工作 [root@server ~ 11:38:01]# echo "<?php echo 'PHP Test Page'.\"\n\"; ?>" > php_test.php [root@server ~ 11:38:19]# php php_test.php PHP Test Page # 创建 PHP 信息测试页 [root@server ~ 11:38:28]# echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/info.php
配置 Nginx 解析 PHP:
# 编辑 nginx 主配置文件 [root@server ~ 11:39:14]# vim /etc/nginx/nginx.conf
在http块中,server块外添加:types{},随即把include /etc/nginx/mime.types;移入
types { # 这行必须放在 types 块内部,引入 mime.types 的内>容 include /etc/nginx/mime.types; # (可选)若有额外的MIME类型,可在这里补充,如: # application/x-httpd-php php; # application/x-httpd-php-source phps; default_type application/octet-stream; }
在 server 块中添加:
location ~ \.php$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params;
测试 PHP 解析:
[root@server ~ 17:05:18]# curl http://www.server.cloud/info.php
反向代理
客户端访问代理服务器,代理服务器会将客户端请求发送给真实服务器。
反向代理实现了隐藏内部服务器。
角色说明
- 代理服务器 proxy 10.1.8.20
- 真实服务器 server 10.1.8.10
代理服务器配置
# 配置解析 [root@proxy ~ 00:33:19]# echo '10.1.8.10 www.server.cloud' >> /etc/hosts # 安装 nginx [root@proxy ~ 00:33:40]# yum -y install nginx # 启动 nginx [root@proxy ~ 00:34:05]# systemctl enable --now nginx # 防火墙 [root@proxy ~]# firewall-cmd --add-service=http --permanent [root@proxy ~]# firewall-cmd --reload # 配置代理,server部分更改如下 [root@proxy ~ 00:34:13]# vim /etc/nginx/nginx.conf # change [server] section like follows server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /usr/share/nginx/html; #添加如下内容 proxy_redirect off; 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; ...... #新增 location 规则 location /proxy/ { proxy_pass http://www.server.cloud/; } } [root@proxy ~]# systemctl restart nginx # If SELnux is enabled, change boolean setting. [root@proxy ~]# setsebool -P httpd_can_network_connect on
真实服务器配置
# 安装nginx [root@proxy ~ 16:17:52]# yum -y install nginx # 启动nginx [root@proxy ~ 16:18:32]# systemctl enable --now nginx # 防火墙 [root@www ~]# firewall-cmd --add-service=http --permanent [root@www ~]# firewall-cmd --reload # 准备测试页 [root@server ~ 00:41:55]# echo hello laoma > /usr/share/nginx/html/proxy/test.html # 测试效果 [root@server ~ 00:44:58]# curl http://www.server.cloud/proxy/test.html <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx/1.20.1</center> </body> </html> #配置的重定向还在所以用https访问 [root@server ~ 00:45:42]# curl -k https://www.server.cloud/proxy/test.html hello laoma
到此这篇关于Nginx服务器安装与配置指南的文章就介绍到这了,更多相关nginx服务器配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!