Nginx服務(wù)器安裝與配置指南
Nginx服務(wù)器配置
一、Nginx 簡介
Nginx 是一款高性能的 HTTP 和反向代理服務(wù)器,其核心優(yōu)勢(shì)在于:
- 采用高效的網(wǎng)絡(luò) I/O 模型(epoll、kqueue、eventport 等)
- 支持高達(dá) 5 萬個(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 開機(jī)自啟并立即啟動(dòng) # enable: 開機(jī)自啟;--now: 立即啟動(dòng) [root@server ~ 14:30:54]# systemctl enable nginx.service --now
2. 配置主頁與測(cè)試
# 備份默認(rèn)主頁
[root@server ~ 23:19:05]# mv /usr/share/nginx/html/index.html{,.ori}
# 創(chuàng)建自定義主頁內(nèi)容
[root@server ~ 23:19:42]# echo nihao > /usr/share/nginx/html/index.html3. 防火墻配置
# 永久開放 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è)試訪問 [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 #寫入網(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頁面 [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里面粘貼,這次要把端口也粘貼出來 [root@server ~ 15:58:28]# vim /etc/nginx/conf.d/vhost-port.conf
配置內(nèi)容:
# 監(jiān)聽 8081 端口的虛擬主機(jī)
server {
listen 8081; # 監(jiān)聽端口
server_name server.cloud; # 綁定域名
root /usr/share/nginx/8081; # 網(wǎng)站根目錄
}
# 監(jiān)聽 8082 端口的虛擬主機(jī)
server {
listen 8082; # 監(jiān)聽端口
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 證書
# 1. 生成 2048 位的私鑰文件 [root@server ~ 23:53:48]# openssl genrsa -out www.key 2048 # 2. 生成證書請(qǐng)求文件(CSR) # -subj 參數(shù)指定證書信息:國家/省份/城市/組織/部門/域名/郵箱 [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)求文件簽名,生成自簽名證書(有效期 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)建證書存放目錄 [root@server ~ 23:59:14]# mkdir /etc/ssl/certs/www.server.cloud # 移動(dòng)證書文件到指定目錄 [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/下,不然無法識(shí)別 [root@server ~ 00:26:24]# vim /etc/nginx/conf.d/ssl.conf
配置內(nèi)容:
server {
# 監(jiān)聽 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)站根目錄
# 配置證書路徑
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; # 監(jiān)聽 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 # 開放 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 訪問(-k 忽略證書驗(yàn)證,自簽名證書需要此參數(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 # 簡單測(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è)試頁 [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ù)器,代理服務(wù)器會(huì)將客戶端請(qǐng)求發(fā)送給真實(shí)服務(wù)器。
反向代理實(shí)現(xiàn)了隱藏內(nèi)部服務(wù)器。
角色說明
- 代理服務(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è)試頁 [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訪問 [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)文章
Nginx 502 bad gateway和Nginx 504 Gateway Time-out錯(cuò)誤解決方法 錯(cuò)誤解決辦
Nginx 502 Bad Gateway的含義是請(qǐng)求的PHP-CGI已經(jīng)執(zhí)行,但是由于某種原因(一般是讀取資源的問題)沒有執(zhí)行完畢而導(dǎo)致PHP-CGI進(jìn)程終止2012-09-09
Nginx服務(wù)器中l(wèi)ocation配置的一些基本要點(diǎn)解析
這篇文章主要介紹了Nginx服務(wù)器中l(wèi)ocation配置的一些基本要點(diǎn)解析,特別對(duì)管理以及查找匹配作出了詳細(xì)的講解,需要的朋友可以參考下2015-12-12
Nginx 日志輪轉(zhuǎn)的實(shí)現(xiàn)示例
Nginx日志輪轉(zhuǎn)是監(jiān)控和調(diào)試Web服務(wù)器的重要工具,通過定期歸檔、壓縮和清理日志文件,可以節(jié)省磁盤空間、提高性能并方便故障排查,下面就來介紹一下2024-12-12
Nginx配合Apache或Tomcat的動(dòng)靜分離基本配置實(shí)例
這篇文章主要介紹了Nginx配合Apache或Tomcat的動(dòng)靜分離基本配置實(shí)例,實(shí)際上Nginx專門負(fù)責(zé)靜態(tài)和反向代理是主流服務(wù)器配置方案,需要的朋友可以參考下2016-01-01
nginx實(shí)現(xiàn)數(shù)據(jù)庫端口轉(zhuǎn)發(fā)
本文主要介紹了nginx實(shí)現(xiàn)數(shù)據(jù)庫端口轉(zhuǎn)發(fā),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03

