# Nginx简单使用

## 安装Nginx

### 编译安装

1. 安装前置依赖包:

   ```
    yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel
   ```
2. 从<http://nginx.org/en/download.html>下载自己需要的版本到`/usr/local/src`下解压.

   ```
    cd /usr/local/src/
    # 1.X.X 为版本号
    wget http://nginx.org/download/nginx-1.X.X.tar.gz
    # 解压
    tar zxvf nginx-1.X.X.tar.gz
   ```
3. 进入安装包目录,编译安装

   ```
    cd nginx-1.X.X
    ./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35
    make && make install
   ```
4. 查看nginx版本

   ```
    /usr/local/webserver/nginx/sbin/nginx -v
   ```
5. 出现以情况为安装完成.

   ```
    nginx version: nginx/1.X.X
   ```

   **其他安装**

   同样可以使用他人写的脚本一键安装,或下载编译好的程序或者用宝塔面板安装.

   这里不做过多解释.

## Nginx 配置

创建`Nginx`运行使用的用户`www`:

```
/usr/sbin/groupadd www
/usr/sbin/useradd -g www www
```

配置`nginx.conf`,将`/usr/local/webserver/nginx/conf/nginx.conf`替换为以下内容:

```
cat /usr/local/webserver/nginx/conf/nginx.conf
```

```
user www www;
worker_processes 2; #设置值和CPU核心数一致
error_log /usr/local/webserver/nginx/logs/nginx_error.log crit; #日志位置和日志级别
pid /usr/local/webserver/nginx/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 65535;
events
{
  use epoll;
  worker_connections 65535;
}
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';

#charset gb2312;

  server_names_hash_bucket_size 128;
  client_header_buffer_size 32k;
  large_client_header_buffers 4 32k;
  client_max_body_size 8m;

  sendfile on;
  tcp_nopush on;
  keepalive_timeout 60;
  tcp_nodelay on;
  fastcgi_connect_timeout 300;
  fastcgi_send_timeout 300;
  fastcgi_read_timeout 300;
  fastcgi_buffer_size 64k;
  fastcgi_buffers 4 64k;
  fastcgi_busy_buffers_size 128k;
  fastcgi_temp_file_write_size 128k;
  gzip on; 
  gzip_min_length 1k;
  gzip_buffers 4 16k;
  gzip_http_version 1.0;
  gzip_comp_level 2;
  gzip_types text/plain application/x-javascript text/css application/xml;
  gzip_vary on;

  #limit_zone crawler $binary_remote_addr 10m;
 #下面是server虚拟主机的配置
 server
  {
    listen 80;#监听端口
    server_name localhost;#域名
    index index.html index.htm index.php;
    root /usr/local/webserver/nginx/html;#站点目录
      location ~ .*\.(php|php5)?$
    {
      #fastcgi_pass unix:/tmp/php-cgi.sock;
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index index.php;
      include fastcgi.conf;
    }
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
    {
      expires 30d;
  # access_log off;
    }
    location ~ .*\.(js|css)?$
    {
      expires 15d;
   # access_log off;
    }
    access_log off;
  }

}
```

检查配置文件的正确性:

```
/usr/local/webserver/nginx/sbin/nginx -t
```

## 启动Nginx

启动命令:

```
/usr/local/webserver/nginx/sbin/nginx
```

检查运行状态:

```
ps -ef|grep nginx
```

```
[root@iZ2zeicu8fd63l89c0ph7qZ ~]# ps -ef|grep nginx
www       3387 30552  0 Mar09 ?        00:00:02 nginx: worker process
www       3388 30552  0 Mar09 ?        00:00:00 nginx: cache manager process
root     24274 24240  0 18:03 pts/0    00:00:00 grep --color=auto nginx
root     30552     1  0 Mar09 ?        00:00:00 nginx: master process /www/server/nginx/sbin/nginx -c /www/server/nginx/conf/nginx.conf
```

## Nginx其他命令

常用命令:

```
/usr/local/webserver/nginx/sbin/nginx -s reload            # 重新载入配置文件
/usr/local/webserver/nginx/sbin/nginx -s reopen            # 重启 Nginx
/usr/local/webserver/nginx/sbin/nginx -s stop              # 停止 Nginx
```

## 参考

* <https://www.runoob.com/w3cnote/nginx-install-and-config.html>
* <https://www.runoob.com/linux/nginx-install-setup.html>
* <http://nginx.org/en/docs/ngx_core_module.html#worker_cpu_affinity>

## 文档

以上是比较简单的使用教程,如需更加详细的了解`Nginx`配置以及原理可以看`Nginx`**官方文档**,这里提供获取方式: [Nginx 烹调书](https://huliuqing.gitbooks.io/complete-nginx-cookbook-zh/) 对应Nginx CookBook的有道翻译版 \[NGINX-Cookbook-2019.pdf]\[1] Nginx CookBook英文原版(注意时期,需要最新版本可去官网自行下载)

\[1]: <https://violetevergarden.top/usr/uploads/2020/03/3399712609.pdf>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://3385706034.gitbook.io/note/nginx-simple-usage.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
