nginx部署总结

先说nginx的安装:

1:安装工具包 wget、vim和gcc

yum install -y wget yum

install -y vim-enhanced yum

install -y make cmake gcc gcc-c++

2:下载nginx安装包

wget http://nginx.org/download/nginx-1.6.2.tar.gz

3:安装依赖包

yum install -y pcre pcre-devel

yum install -y zlib zlib-devel yum

install -y openssl openssl-devel

4:解压nginx-1.6.2.tar.gz到/usr/local/目录下

tar -zxvf nginx-1.6.2.tar.gz -C /usr/local/

5:进行configure配置

进入nginx-1.6.2目录然后在执行./configure命令

[root@MiWiFi-R3-srv nginx-1.6.2]# ./configure --prefix=/usr/local/nginx

6:编译安装

[root@MiWiFi-R3-srv nginx-1.6.2]# make && make install

7:启动Nginx,启动完之后检查nginx是否已经正常启动,看到如下信息说明正常启动

[root@MiWiFi-R3-srv nginx-1.6.2]# /usr/local/nginx/sbin/nginx

[root@MiWiFi-R3-srv nginx-1.6.2]# ps -ef | grep nginx

root 24956 1 0 19:41 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx nobody 24957 24956 0 19:41 ? 00:00:00 nginx: worker process root 24959 10533 0 19:41 pts/0 00:00:00 grep --color=auto nginx

[root@MiWiFi-R3-srv nginx-1.6.2]#

如果要关闭nginx,我们可以使用如下命令:

[root@MiWiFi-R3-srv nginx-1.6.2]# /usr/local/nginx/sbin/nginx -s stop

如果想要重新热启动nginx,则使用如下命令:

[root@MiWiFi-R3-srv nginx-1.6.2]# /usr/local/nginx/sbin/nginx -s reload

8:配置防火墙,nginx默认的端口是80

[root@MiWiFi-R3-srv nginx-1.6.2]# firewall-cmd --zone=public --add-port=80/tcp --permanent success

[root@MiWiFi-R3-srv nginx-1.6.2]# firewall-cmd --reload success

[root@MiWiFi-R3-srv nginx-1.6.2]#

9:测试nginx

通过浏览器访问nginx欢迎页,在地址栏输入:http://192.168.31.241/(80端口可以不用输)或http://192.168.156.11:80/,如下图所示。

10:学习nginx配置

在nginx目录下进入conf目录,该目录下有个nginx.conf文件,这是nginx最重要的配置文件

[root@MiWiFi-R3-srv conf]# vim /usr/local/nginx/conf/nginx.conf

 

#user nobody;

#开启进程数 <=CPU数

worker_processes 1;

#每个进程最大连接数(最大连接=连接数x进程数)每个worker允许同时产生多少个链接,默认1024 events { worker_connections 1024;

}

http { 

#文件扩展名与文件类型映射表

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/access.log main;

#打开发送文件

sendfile on;

#tcp_nopush on;

#keepalive_timeout 0;

#连接超时时间

keepalive_timeout 65;

#打开gzip压缩

#gzip on;

server {

 #监听端口

listen 80;

#监听域名

server_name localhost;

#charset koi8-r;

#nginx访问日志放在logs/host.access.log下,并且使用main格式(还可以自定义格式)

 

#access_log logs/host.access.log main;

#如果没有location更明确的匹配访问路径的话,访问请求都会被该location处理。

location / {

#root指定nginx的根目录为/usr/local/nginx/html

root html;

#默认访问文件,欢迎页先去html目录下找index.html,如果找不到再去找index.htm

index index.html index.htm;

}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html

#

#错误页面及其返回地址,错误码为500、502、503、504都会返回50.html错误页面。

error_page 500 502 503 504 /50x.html;

#location后面是"="的话,说明是精确匹配

location = /50x.html {

     root html;

}

server {

     listen 1234;

    server_name test.com;

    location / {

      #正则表达式匹配uri方式:在/usr/local/nginx/tester下 建立一个tester111.html 然后使用正则匹配

      root tester;

      index tester111.html;

        }

     }

   }

}

上面的是复制其他文章的,下面的,才是我本人所碰到 的坑;

我想在一个机器 上,通过域名区分不同的服务,比如服务A,端口:8081,服务b,端口8082,服务3,端口8083;

然而 ,我发我这台linux机器 上已经安装了gitlab,而gitlab上又自带nginx,它的端口我这里拿80拿举例子;

我起初是在这台机器上又安装了一个nginx服务,端口,都设置为80,然后,域名设置为不同的域名,形如下面这种 

server_A{

     listen 80;

    server_name test_A.com;

location{

    proxy_pass http://47.96.103.206:8081;

}

}

server_B{

     listen 80;

    server_name test_B.com;

location{

    proxy_pass http://47.96.103.206:8082;

}

}

server_C{

     listen 80;

    server_name test_C.com;

location{

    proxy_pass http://47.96.103.206:8083;

}

}

可是发现失败;

 

然后又将80端口换成别的端口,比如,我是8081,

server_A{

     listen 8081;

    server_name test._A.com;

location{

    proxy_pass http://47.96.103.206:8083;

}

}

server_B{

     listen 8081;

    server_name test_B.com;

location{

    proxy_pass http://47.96.103.206:8083;

}

}

server_C{

     listen 80;

    server_name test_C.com;

location{

    proxy_pass http://47.96.103.206:8083;

}

}

可是,还是失败;

后来,我明白了,估计是nginx只能通过80端口区分不同的服务;,如果有朋友可以通过其他的端口来区分的例 子,还请指正;

然后,一台机器 上最好安装一台nginx;最后,没办法,我只好停用掉之前的nginx;将gitlab之前自带的nginx配置,移出来到 新的nginx上,然后各种报错,一种解决;

最后,把端口换成80端口,通过域名来区分,问题解决了; 

除了上面以外,还有一个坑,有一个jenkins的服务,我放在tomcat的非根目录 下,

本来,想通过 

Server{

listen 80;

server_name : jenkins.zmlicai.com;

location /{

    proxy_pass http://47.96.103.206:8089/jenkins;

}

}

 

可是却失败了;后面尝试了许多方法,都失败了;

再后来,妥协了,采用了jenkins.zmlicai.com/jenkins的访问方式;配置如下:

Server{

listen 80;

server_name : jenkins.zmlicai.com;

location /jenkins{

    proxy_pass http://47.96.103.206:8089;

}

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<think>好的,用户想知道如何使用Nginx部署静态或动态网站。首先,我需要回忆一下Nginx的基本配置和相关引用内容。 根据引用[1]和[2],部署静态网站主要是将文件放在指定目录,比如/usr/local/nginx/html下,然后配置Nginx的server块指向这个目录。而动态网站可能需要反向代理到后端应用服务器,比如Node.js或Django。引用[3]提到使用sites-available和sites-enabled来管理虚拟主机,这样方便配置多个站点。 用户的问题包括静态和动态两种部署方式,所以需要分别说明。静态部分应该简单,检查Nginx安装、放置文件、配置server块,然后测试。动态部分需要设置反向代理,比如代理到localhost的某个端口,处理动态请求。 还要注意配置文件的语法正确性,比如在server块里设置root目录,动态的location /用proxy_pass。可能需要提到HTTPS配置,引用[1]和[4]提到的SSL证书,但用户没明确要求,可能作为补充。 另外,检查配置和重启Nginx的步骤很重要,避免配置错误导致服务不可用。还要确保用户知道如何上传文件到服务器,可能需要使用SCP或者FTP工具。 总结回答结构:分静态和动态两部分,静态包括基本配置,动态包括反向代理示例。同时引用相关引用内容作为支持,比如目录结构、配置管理方法。最后加上常见问题和注意事项,比如权限、防火墙设置等。</think>### 如何用 Nginx 部署静态或动态网站 Nginx 部署网站的核心是通过配置文件定义资源路径或反向代理规则。以下是具体步骤和原理: --- #### **一、部署静态网站** 静态网站(如 HTML、CSS、JavaScript 文件)的部署流程如下: 1. **准备文件** 将静态资源(如 `index.html`、`style.css`)上传至服务器目录,默认路径为 `/usr/local/nginx/html`[^2]。也可自定义路径,例如 `/var/www/my_site`。 2. **配置 Nginx** 修改配置文件(通常位于 `/etc/nginx/nginx.conf` 或 `/etc/nginx/sites-available/default`[^3]),添加以下内容: ```nginx server { listen 80; server_name example.com; # 域名或IP root /var/www/my_site; # 静态资源路径 index index.html; # 默认入口文件 location / { try_files $uri $uri/ =404; # 优先匹配现有文件,否则返回404 } } ``` 3. **验证与重启** - 检查语法:`nginx -t` - 重启服务:`systemctl restart nginx` - 浏览器访问 `http://example.com` 即可看到页面[^1]。 --- #### **二、部署动态网站** 动态网站(如 Node.js、Python Django)需通过反向代理将请求转发至后端服务: 1. **启动后端服务** 确保动态应用已运行并监听端口(例如 Node.js 监听 `localhost:3000`)。 2. **配置反向代理** 在 Nginx 配置中添加以下规则: ```nginx server { listen 80; server_name api.example.com; location / { proxy_pass http://localhost:3000; # 转发至后端服务 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` 3. **高级配置(可选)** - **负载均衡**:通过 `upstream` 定义多个后端服务器。 - **HTTPS**:使用 Let's Encrypt 免费证书,添加 SSL 监听端口和证书路径[^4]。 --- #### **三、注意事项** 1. **权限问题** 确保 Nginx 用户(如 `www-data`)对资源目录有读取权限。 2. **虚拟主机管理** 使用 `sites-available` 存放配置,通过符号链接到 `sites-enabled` 启用站点。 3. **日志排查** 查看 `/var/log/nginx/error.log` 快速定位配置错误。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值