Nginx服務(wù)器安裝與配置指南
Nginx服務(wù)器配置
一、Nginx 簡(jiǎn)介
Nginx 是一款高性能的 HTTP 和反向代理服務(wù)器,其核心優(yōu)勢(shì)在于:
- 采用高效的網(wǎng)絡(luò) I/O 模型(epoll、kqueue、eventport 等)
- 支持高達(dá) 5 萬(wàn)個(gè)并發(fā)連接
- 系統(tǒng)資源(內(nèi)存、CPU)消耗低
- 運(yùn)行穩(wěn)定,適合作為生產(chǎn)環(huán)境的 web 服務(wù)器
二、Nginx 安裝與基礎(chǔ)配置
1. 安裝與啟動(dòng)
# 使用 yum 包管理器安裝 nginx [root@server ~ 14:30:54]# yum -y install nginx # 設(shè)置 nginx 開(kāi)機(jī)自啟并立即啟動(dòng) # enable: 開(kāi)機(jī)自啟;--now: 立即啟動(dòng) [root@server ~ 14:30:54]# systemctl enable nginx.service --now
2. 配置主頁(yè)與測(cè)試
# 備份默認(rèn)主頁(yè)
[root@server ~ 23:19:05]# mv /usr/share/nginx/html/index.html{,.ori}
# 創(chuàng)建自定義主頁(yè)內(nèi)容
[root@server ~ 23:19:42]# echo nihao > /usr/share/nginx/html/index.html3. 防火墻配置
# 永久開(kāi)放 http 服務(wù)(80端口) [root@server ~ 14:33:53]# firewall-cmd --add-service=http --permanent # 重新加載防火墻規(guī)則使配置生效 [root@server ~ 14:33:53]# firewall-cmd --reload
4. 測(cè)試配置
# 測(cè)試訪問(wèn) [root@server ~ 23:20:13]# curl http://www.server.cloud curl: (6) Could not resolve host: www.server.cloud; 未知的錯(cuò)誤 [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為實(shí)際ip
三、虛擬主機(jī)配置
虛擬主機(jī)允許在同一臺(tái)服務(wù)器上部署多個(gè)網(wǎng)站,主要有兩種實(shí)現(xiàn)方式:
1. 基于域名的虛擬主機(jī)
# 創(chuàng)建虛擬主機(jī)配置文件,從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
配置內(nèi)容:
#第一個(gè)虛擬主機(jī)
server {
server_name www1.server.cloud; # 綁定的域名
root /usr/share/nginx/web1; # 網(wǎng)站根目錄
}
#第二個(gè)虛擬主機(jī)
server {
server_name www2.server.cloud; # 綁定的域名
root /usr/share/nginx/web2; # 網(wǎng)站根目錄
}
測(cè)試與驗(yàn)證
#先創(chuàng)建root中所填目錄 [root@server ~ 23:31:06]# mkdir /usr/share/nginx/web1 [root@server ~ 23:31:13]# mkdir /usr/share/nginx/web2 #寫(xiě)入網(wǎng)站內(nèi)容 [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 #修改主機(jī)配置 [root@server ~ 23:32:37]# vim /etc/hosts 10.1.8.10 web1.server.cloud 10.1.8.10 web2.server.cloud #重啟服務(wù)并測(cè)試web頁(yè)面 [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. 基于端口的虛擬主機(jī)
# 創(chuàng)建端口虛擬主機(jī)配置文件 #繼續(xù)從nginx.conf里面粘貼,這次要把端口也粘貼出來(lái) [root@server ~ 15:58:28]# vim /etc/nginx/conf.d/vhost-port.conf
配置內(nèi)容:
# 監(jiān)聽(tīng) 8081 端口的虛擬主機(jī)
server {
listen 8081; # 監(jiān)聽(tīng)端口
server_name server.cloud; # 綁定域名
root /usr/share/nginx/8081; # 網(wǎng)站根目錄
}
# 監(jiān)聽(tīng) 8082 端口的虛擬主機(jī)
server {
listen 8082; # 監(jiān)聽(tīng)端口
server_name server.cloud; # 綁定域名
root /usr/share/nginx/8082; # 網(wǎng)站根目錄
}測(cè)試與驗(yàn)證
#創(chuàng)建目錄 [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 #重啟服務(wù)!并測(cè)試 [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 證書(shū)
# 1. 生成 2048 位的私鑰文件 [root@server ~ 23:53:48]# openssl genrsa -out www.key 2048 # 2. 生成證書(shū)請(qǐng)求文件(CSR) # -subj 參數(shù)指定證書(shū)信息:國(guó)家/省份/城市/組織/部門(mén)/域名/郵箱 [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 的值必須與網(wǎng)站域名一致 # 3. 使用私鑰對(duì)請(qǐng)求文件簽名,生成自簽名證書(shū)(有效期 3650 天) [root@server ~ 23:59:00]# openssl x509 -req -days 3650 -in www.csr -signkey www.key -out www.crt
2. 配置 HTTPS 站點(diǎn)
# 創(chuàng)建證書(shū)存放目錄 [root@server ~ 23:59:14]# mkdir /etc/ssl/certs/www.server.cloud # 移動(dòng)證書(shū)文件到指定目錄 [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文件創(chuàng)建在/etc/nginx/conf.d/下,不然無(wú)法識(shí)別 [root@server ~ 00:26:24]# vim /etc/nginx/conf.d/ssl.conf
配置內(nèi)容:
server {
# 監(jiān)聽(tīng) 443 端口(HTTPS 默認(rèn)端口),啟用 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; # 網(wǎng)站根目錄
# 配置證書(shū)路徑
ssl_certificate "/etc/ssl/certs/www.server.cloud/www.crt"; # 公鑰證書(shū)
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; # 監(jiān)聽(tīng) 80 端口(HTTP)
listen [::]:80 default_server;
server_name www.server.cloud;
root /usr/share/nginx/html;
# 301 永久重定向到 HTTPS
# $host: 域名;$request_uri: 請(qǐng)求路徑
return 301 https://$host$request_uri;
}4. 重啟服務(wù)與防火墻配置
# 重啟 nginx 使配置生效 [root@server ~ 00:29:59]# systemctl restart nginx.service # 開(kāi)放 HTTPS 服務(wù)(443 端口) [root@www ~]# firewall-cmd --add-service=https --permanent [root@www ~]# firewall-cmd --reload # 測(cè)試重定向(會(huì)自動(dòng)跳轉(zhuǎn)到 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> # 測(cè)試 HTTPS 訪問(wèn)(-k 忽略證書(shū)驗(yàn)證,自簽名證書(shū)需要此參數(shù)) [root@server ~ 00:30:38]# curl -k https://www.server.cloud/ mmm
五、支持動(dòng)態(tài)腳本
配置 PHP 支持
# 安裝 PHP 及相關(guān)組件 [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 # 簡(jiǎn)單測(cè)試 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 # 創(chuàng)建 PHP 信息測(cè)試頁(yè) [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 塊內(nèi)部,引入 mime.types 的內(nèi)>容
include /etc/nginx/mime.types;
# (可選)若有額外的MIME類型,可在這里補(bǔ)充,如:
# 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;測(cè)試 PHP 解析:
[root@server ~ 17:05:18]# curl http://www.server.cloud/info.php
反向代理
客戶端訪問(wèn)代理服務(wù)器,代理服務(wù)器會(huì)將客戶端請(qǐng)求發(fā)送給真實(shí)服務(wù)器。
反向代理實(shí)現(xiàn)了隱藏內(nèi)部服務(wù)器。
角色說(shuō)明
- 代理服務(wù)器 proxy 10.1.8.20
- 真實(shí)服務(wù)器 server 10.1.8.10
代理服務(wù)器配置
# 配置解析
[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
# 啟動(dòng) 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;
#添加如下內(nèi)容
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 規(guī)則
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真實(shí)服務(wù)器配置
# 安裝nginx [root@proxy ~ 16:17:52]# yum -y install nginx # 啟動(dòng)nginx [root@proxy ~ 16:18:32]# systemctl enable --now nginx # 防火墻 [root@www ~]# firewall-cmd --add-service=http --permanent [root@www ~]# firewall-cmd --reload # 準(zhǔn)備測(cè)試頁(yè) [root@server ~ 00:41:55]# echo hello laoma > /usr/share/nginx/html/proxy/test.html # 測(cè)試效果 [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訪問(wèn) [root@server ~ 00:45:42]# curl -k https://www.server.cloud/proxy/test.html hello laoma
到此這篇關(guān)于Nginx服務(wù)器安裝與配置指南的文章就介紹到這了,更多相關(guān)nginx服務(wù)器配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Crontab+Shell做Nginx日志切割腳本實(shí)例代碼
本篇文章主要介紹了Crontab+Shell做Nginx日志切割腳本實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
nginx攔截非法host或直接使用ip訪問(wèn)的請(qǐng)求的實(shí)現(xiàn)
非法攔截可以有效防止直接通過(guò)IP或本地綁定域名的方式進(jìn)行非法訪問(wèn),本文主要介紹了nginx攔截非法host或直接使用ip訪問(wèn)的請(qǐng)求的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-12-12
使用nginx打包部署前端vue項(xiàng)目完整過(guò)程(保姆級(jí)教程)
這篇文章主要給大家介紹了關(guān)于使用nginx打包部署前端vue項(xiàng)目的相關(guān)資料,包括打包命名、執(zhí)行打包命令、檢查打包成功、下載和解壓Nginx、部署到Nginx、啟動(dòng)Nginx并訪問(wèn)項(xiàng)目、以及Nginx的優(yōu)勢(shì),需要的朋友可以參考下2024-11-11
Nginx跨域訪問(wèn)場(chǎng)景配置和防盜鏈詳解
這篇文章主要介紹了Nginx跨域訪問(wèn)場(chǎng)景配置和防盜鏈詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
編寫(xiě)Go程序?qū)ginx服務(wù)器進(jìn)行性能測(cè)試的方法
這篇文章主要介紹了編寫(xiě)Go程序?qū)ginx服務(wù)器進(jìn)行性能測(cè)試的方法,包括對(duì)其負(fù)載均衡和緩存等方面的測(cè)試,極力推薦!需要的朋友可以參考下2015-06-06

