Back to Searxng

NGINX

docs/admin/installation-nginx.rst

latest5.9 KB
Original Source

.. _installation nginx:

===== NGINX

.. _nginx: https://docs.nginx.com/nginx/admin-guide/ .. _nginx server configuration: https://docs.nginx.com/nginx/admin-guide/web-server/web-server/#setting-up-virtual-servers .. _nginx beginners guide: https://nginx.org/en/docs/beginners_guide.html .. _Getting Started wiki: https://www.nginx.com/resources/wiki/start/ .. _uWSGI support from nginx: https://uwsgi-docs.readthedocs.io/en/latest/Nginx.html .. _uwsgi_params: https://uwsgi-docs.readthedocs.io/en/latest/Nginx.html#configuring-nginx .. _SCRIPT_NAME: https://werkzeug.palletsprojects.com/en/1.0.x/wsgi/#werkzeug.wsgi.get_script_name

This section explains how to set up a SearXNG instance using the HTTP server nginx_. If you have used the :ref:installation scripts and do not have any special preferences you can install the :ref:SearXNG site <nginx searxng site> using :ref:searxng.sh <searxng.sh overview>:

.. code:: bash

$ sudo -H ./utils/searxng.sh install nginx

If you have special interests or problems with setting up nginx, the following section might give you some guidance.

.. sidebar:: further reading

  • nginx_
  • nginx beginners guide_
  • nginx server configuration_
  • Getting Started wiki_
  • uWSGI support from nginx_

.. contents:: :depth: 2 :local: :backlinks: entry

The nginx HTTP server

If nginx_ is not installed, install it now.

.. tabs::

.. group-tab:: Ubuntu / debian

  .. code:: bash

     sudo -H apt-get install nginx

.. group-tab:: Arch Linux

  .. code-block:: sh

     sudo -H pacman -S nginx-mainline
     sudo -H systemctl enable nginx
     sudo -H systemctl start nginx

.. group-tab:: Fedora / RHEL

  .. code-block:: sh

     sudo -H dnf install nginx
     sudo -H systemctl enable nginx
     sudo -H systemctl start nginx

Now at http://localhost you should see a Welcome to nginx! page, on Fedora you see a Fedora Webserver - Test Page. The test page comes from the default nginx server configuration_. How this default site is configured, depends on the linux distribution:

.. tabs::

.. group-tab:: Ubuntu / debian

  .. code:: bash

     less /etc/nginx/nginx.conf

  There is one line that includes site configurations from:

  .. code:: nginx

     include /etc/nginx/sites-enabled/*;

.. group-tab:: Arch Linux

  .. code-block:: sh

     less /etc/nginx/nginx.conf

  There is a configuration section named ``server``:

  .. code-block:: nginx

     server {
         listen       80;
         server_name  localhost;
         # ...
     }

.. group-tab:: Fedora / RHEL

  .. code-block:: sh

     less /etc/nginx/nginx.conf

  There is one line that includes site configurations from:

  .. code:: nginx

      include /etc/nginx/conf.d/*.conf;

.. _nginx searxng site:

NGINX's SearXNG site

Now you have to create a configuration file (searxng.conf) for the SearXNG site. If nginx_ is new to you, the nginx beginners guide_ is a good starting point and the Getting Started wiki_ is always a good resource to keep in the pocket.

Depending on what your SearXNG installation is listening on, you need a http or socket communication to upstream.

.. tabs::

.. group-tab:: socket

  .. kernel-include:: $DOCS_BUILD/includes/searxng.rst
     :start-after: START nginx socket
     :end-before: END nginx socket

.. group-tab:: http

  .. kernel-include:: $DOCS_BUILD/includes/searxng.rst
     :start-after: START nginx http
     :end-before: END nginx http

The :ref:installation scripts installs the :ref:reference setup <use_default_settings.yml> and a :ref:uwsgi setup that listens on a socket by default.

.. tabs::

.. group-tab:: Ubuntu / debian

  Create configuration at ``/etc/nginx/sites-available/`` and place a
  symlink to ``sites-enabled``:

  .. code:: bash

     sudo -H ln -s /etc/nginx/sites-available/searxng.conf \
                   /etc/nginx/sites-enabled/searxng.conf

.. group-tab:: Arch Linux

  In the ``/etc/nginx/nginx.conf`` file, in the ``server`` section add a
  `include <https://nginx.org/en/docs/ngx_core_module.html#include>`_
  directive:

  .. code:: nginx

     server {
         # ...
         include /etc/nginx/default.d/*.conf;
         # ...
     }

  Create two folders, one for the *available sites* and one for the *enabled sites*:

  .. code:: bash

     mkdir -p /etc/nginx/default.d
     mkdir -p /etc/nginx/default.apps-available

  Create configuration at ``/etc/nginx/default.apps-available`` and place a
  symlink to ``default.d``:

  .. code:: bash

     sudo -H ln -s /etc/nginx/default.apps-available/searxng.conf \
                   /etc/nginx/default.d/searxng.conf

.. group-tab:: Fedora / RHEL

  Create a folder for the *available sites*:

  .. code:: bash

     mkdir -p /etc/nginx/default.apps-available

  Create configuration at ``/etc/nginx/default.apps-available`` and place a
  symlink to ``conf.d``:

  .. code:: bash

     sudo -H ln -s /etc/nginx/default.apps-available/searxng.conf \
                   /etc/nginx/conf.d/searxng.conf

Restart services:

.. tabs::

.. group-tab:: Ubuntu / debian

  .. code:: bash

     sudo -H systemctl restart nginx
     sudo -H service uwsgi restart searxng

.. group-tab:: Arch Linux

  .. code:: bash

     sudo -H systemctl restart nginx
     sudo -H systemctl restart uwsgi@searxng

.. group-tab:: Fedora / RHEL

  .. code:: bash

     sudo -H systemctl restart nginx
     sudo -H touch /etc/uwsgi.d/searxng.ini

Disable logs

For better privacy you can disable nginx logs in /etc/nginx/nginx.conf.

.. code:: nginx

http {
    # ...
    access_log /dev/null;
    error_log  /dev/null;
    # ...
}