# Installing Nginx

Nginx is a web server with a lot of features, made according to the latest canons of technology. It is used by the largest companies such as VKontakte, Google, Facebook and others.

{% hint style="warning" %}
Before installing, make sure that you do not have **Apache2** installed!
{% endhint %}

### Installing a Web server

Its installation is extremely simple, use the following command:

```
apt-get install nginx -y
```

## Customization Nginx

You need to go to the **/etc/nginx/sites-available** directory and create a file such as «**site.conf**».

Paste the following into the config and edit:

{% code title="site.conf" %}

```
server {
    listen       *:80;
    server_name  spacecore.pro; # site domain
    client_max_body_size 1000M; # the maximum file size transmitted through the site
    error_page 404 = @notfound;
    location / {
        root   /home/site/spacecore; # the path to the site
        try_files $uri $uri.html $uri/ @extensionless-php;
        index  index.html index.php;
    }
    # Подключения PHP, if you don't need it, then erase lines 13 to 21
    location ~ \.(php|html|htm)$ {
        try_files $uri =404;
        root   /home/site/spacecore; # the path to the site
        fastcgi_pass unix:/run/php/php7.0-fpm.sock; # the path to php
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        include /etc/nginx/fastcgi_params;
    }
}
```

{% endcode %}

Restarting **Nginx**:

```
service nginx restart
```

### Notes on PHP

{% hint style="info" %}
**PHP** is not required to work with **Nginx**. This note is important only for those whose site uses **PHP**.
{% endhint %}

Additional information can be found [here](https://wiki.spacecore.pro/web-sites/install-php).

### Connecting an SSL certificate to Nginx

{% hint style="info" %}
**SSL** connection is not required, it is carried out if it is available and you wish.
{% endhint %}

We need to create or edit a site config to look like this:

```
server {
    listen 80;
    server_name spacecore.pro; # site domain
    return 301 https://$server_name$request_uri; # redirect from http to https
}

server {
    listen 443 ssl http2;
    server_name spacecore.pro; # site domain

    root /var/www/spacecore; # the path to the site
    index index.html index.htm index.php; # index pages

    access_log /var/log/nginx/spacecore.app-access.log; # logs of successful connections
    error_log  /var/log/nginx/spacecore.app-error.log error; # logs of erroneous connections

    # if you want to disable something, instead of the path to the file write «off»

    client_max_body_size 1000m; # the maximum file size transmitted through the site
    client_body_timeout 120s; # timeout value

    sendfile off; # after enabling, Nginx will send HTTP response headers in a single packet, rather than in separate parts.
    # SSL Configuration
    ssl_certificate /etc/letsencrypt/live/spacecore.pro/fullchain.pem; # the public key of the certificate
    ssl_certificate_key /etc/letsencrypt/live/spacecore.pro/privkey.pem; # the private key of the certificate
    ssl_session_cache shared:SSL:10m; # SSL session cache size
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";
    ssl_prefer_server_ciphers on; # reduces the loading time of the site pages

    location ~ \.(php|html|htm)$ {
try_files $uri =404;
root /var/www/spacecore; # the path to the site
fastcgi_pass unix:/run/php/php7.2-fpm.sock; # the path to php
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include /etc/nginx/fastcgi_params;
    }
}
```

Rebooting **Nginx**:

```
service nginx restart
```

## Checking for Apache2

If **Nginx** is installed with **Apache2**, they will conflict due to port 80. So you need to delete one of the **Web servers**. Check if **Apache2** is installed:

```
service apache2 status
```

{% hint style="info" %}
If there is not a huge message with information, then it is not installed.
{% endhint %}

If **Apache2** is installed, you need to remove it:

```
apt-get remove --purge apache2* -y
```

## Removal Nginx

In order to completely remove **Nginx** from the server, it must first be stopped:

```
service nginx stop
```

And then write a command that will permanently delete it:

```
apt-get remove --purge nginx*
```


---

# 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://spacecore.gitbook.io/wiki/en/web-development/install-nginx.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.
